public class MyThread extends Thread {
private String value1, value2;
public void run() {
value1 = "data1";
value2 = "data2";
}
}
// 主線程直接讀取 → 可能為 null (run 還沒執行完)
| 策略 | 代碼 | 優點 | 缺點 |
|---|---|---|---|
| 固定 sleep | sleep(1000) | 簡單 | 時間不可控,不可靠 |
| 忙等待 | while(val==null); | 即時 | 佔用 100% CPU |
| 睡眠輪詢 | while(val==null) sleep(100) | 較省資源 | 仍有延遲,代碼囉嗦 |
| join() | thread.join() | 精確等待線程結束,最優雅 | 阻塞主線程 |
thread.start();
thread.join(); // 此行後 run() 必定執行完畢
// 安全使用 thread.value1, value2
已在《向線程傳遞數據》介紹:Work.process() 同時實現「傳入計算參數」與「返回隨機數結果」。
// 線程內部
callback.process(result); // 返回數據
// 主線程實現回調接口
public void process(Data result) {
// 接收返回數據
}