【发布时间】:2017-01-31 07:30:46
【问题描述】:
我有点不好意思问这个基本问题,但就是这样。
假设我有一个主类和一个工作线程。工作线程做一些异步工作,并将结果返回给主类的回调。
现在我苦苦挣扎的是:主类的回调作为工作线程的一部分执行。我已经这样做了十几次,它从来没有给我造成任何问题,但我想知道如何优雅地将工作线程的响应传递回实际的主线程。
我知道我可以使用Future 和FutureTask 等,但对我来说感觉很笨拙。
例子:
class ThreadTest {
private Runnable mRunnable;
public ThreadTest() {
System.out.println("ThreadTest(): thread " + Thread.currentThread().getId());
mRunnable = new Runnable() {
public void run() {
System.out.println("run(): thread " + Thread.currentThread().getId());
print();
}
};
new Thread(mRunnable).start();
}
private void print() {
System.out.println("print(): thread " + Thread.currentThread().getId());
}
public static void main(String... args) {
System.out.println("main(): thread " + Thread.currentThread().getId());
ThreadTest t = new ThreadTest();
}
}
输出:
main(): thread 1
ThreadTest(): thread 1
run(): thread 9
print(): thread 9
我想得到什么:
main(): thread 1
ThreadTest(): thread 1
run(): thread 9
print(): thread 1
【问题讨论】:
-
你说的完全正确,我刚离开电脑一两个小时......
-
那没关系;-.)
标签: java multithreading thread-safety