我有一個線程,我需要等待它的結果,這樣的:Java的等待 - 爲多線程問題
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」所做的更改。你的主線可以永遠旋轉。 – Jon 2009-07-30 21:57:53