【发布时间】:2009-07-30 21:37:44
【问题描述】:
我有一个线程,我需要等待它的结果,像这样:
t1.start();
while (variableModifiedByMyThread == null) {
/* do nothing */
}
// "t1" set the value of "variableModifiedByMyThread"
上面的代码可以运行,但不是一个很好的解决方案...
这段代码是否在做同样的事情(是否在等待“t1”线程)?
t1.start();
try {
t1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
// "t1" thread finished
【问题讨论】:
-
您的第一个代码示例不是线程安全的。不能保证主线程会在没有锁定/同步的情况下看到对变量“variableModifiedByMyThread”所做的更改。你的主线程可以永远旋转。
标签: java multithreading