首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 多線程數據傳遞與返回:類成員、回調函數與 join 同步三大模式

     編輯:Java 相關知識

從線程返回數據兩大模式

一、類成員變量/方法返回 (需同步等待)

public class MyThread extends Thread {
    private String value1, value2;
    public void run() {
        value1 = "data1";
        value2 = "data2";
    }
}
// 主線程直接讀取 → 可能為 null (run 還沒執行完)

等待策略對比

策略代碼優點缺點
固定 sleepsleep(1000)簡單時間不可控,不可靠
忙等待while(val==null);即時佔用 100% CPU
睡眠輪詢while(val==null) sleep(100)較省資源仍有延遲,代碼囉嗦
join()thread.join()精確等待線程結束,最優雅阻塞主線程

join() 最佳實踐

thread.start();
thread.join();  // 此行後 run() 必定執行完畢
// 安全使用 thread.value1, value2

二、回調函數 (雙向數據通道)

已在《向線程傳遞數據》介紹:Work.process() 同時實現「傳入計算參數」與「返回隨機數結果」。

// 線程內部
callback.process(result);  // 返回數據

// 主線程實現回調接口
public void process(Data result) {
    // 接收返回數據
}

核心區別:返回 vs 傳遞

  • 傳遞:主線程 → 子線程 (啟動前/運行中)
  • 返回:子線程 → 主線程 (運行中/結束後) 必須同步等待
  • 類成員模式:join() 是標準解法
  • 回調模式:異步非阻塞,適合事件驅動架構
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved