Java:定期从线程向主类发送数据

标签 java multithreading

我有一个从 HTTP 下载数据的线程。我使用流 API 每 1 秒到大约 10 分钟获取一次。

从 HTTP 服务器接收数据后,我需要将此数据发送到 MyMainClass 中的方法。如果没有静态方法,我该如何做到这一点?我不喜欢使用静态方法。

public class MyMainClass {  
    public static void main(String[] args) {            
        GetData getData = new GetData();
        getData.start();        
    }

    public static void useText(String text) {
        System.out.println(text);
        // do something...          
    }
}


public class GetData extends Thread {

    @Override
    public void run() {
        String text;

        /* Download text from HTTP and save it to "text".
         * Every 1 seconds to about 10 minutes using stream API.
         * text= "abc...";
         * If there are no errors, run method never exit.
         */
        MyMainClass.useText(text);

    }
}

最佳答案

使您的方法成为实例方法,并创建可以传递给 Thread 实例的类的实例

public static void main(String[] args) {            
    GetData getData = new GetData(new MyMainClass());
    getData.start();        
}

public void useText(String text) {
    System.out.println(text);
    // do something...          
}

GetData 类的 run 方法中,您可以使用 MyMainClass 实例作为回调。

public GetData extends Thread {
    public GetData(MyMainClass instance) {
        this.instance = instance;
    }

    private MyMainClass instance;

    @Override
    public void run() {
        String text;

        /* Download text from HTTP and save it to "text".
         * Every 1 seconds to about 10 minutes using stream API.
         * text= "abc...";
         * If there are no errors, run method never exit.
         */
        instance.useText(text);
    }
}

关于Java:定期从线程向主类发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25615068/

相关文章:

c# - 等待多个后台线程

java - 删除数组中的重复元素并将其存储到另一个数组中

Java 如何保护 http 连接查询字符串 URL 请求传递和获取敏感数据?

java - 使用 LinkedList 对名称进行排序并将它们存储到数组单元格中

linux - pthread_join 是如何实现的?

c# - 将 Async Task 与 Dispatcher 结合使用以从 ViewModel 循环更新 WP8.1 WinRT 的 UI 线程

Java 线程,从主 JFrame GUI 关闭服务器线程

java - 比较两个不同表的两个结果集

Java 8 流 : find items from one list that match conditions calculated based on values from another list

java - 从 Java 线程池执行器获取调试信息