Thread.join()
方法用于等待一個(gè)線程執(zhí)行完畢后再執(zhí)行當(dāng)前線程。在線程安全的集合框架中,可以使用 Thread.join()
方法來確保某個(gè)線程在另一個(gè)線程完成特定操作后再繼續(xù)執(zhí)行。
例如,假設(shè)你有一個(gè)線程安全的集合框架,如 ConcurrentHashMap
,你希望在線程 A 完成對(duì)集合的修改后,線程 B 再?gòu)募现凶x取數(shù)據(jù)。你可以使用 Thread.join()
方法來實(shí)現(xiàn)這個(gè)需求:
public class ThreadSafeCollectionExample {
public static void main(String[] args) throws InterruptedException {
ConcurrentHashMap<String, String> concurrentMap = new ConcurrentHashMap<>();
Thread threadA = new Thread(() -> {
// 對(duì)集合進(jìn)行修改的操作
concurrentMap.put("key", "value");
System.out.println("Thread A finished modifying the collection.");
});
Thread threadB = new Thread(() -> {
try {
// 等待線程 A 完成操作
threadA.join();
// 從集合中讀取數(shù)據(jù)
String value = concurrentMap.get("key");
System.out.println("Thread B read value: " + value);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
// 啟動(dòng)線程
threadA.start();
threadB.start();
}
}
在這個(gè)例子中,線程 B 使用 threadA.join()
方法等待線程 A 完成對(duì) ConcurrentHashMap
的修改。這樣可以確保在線程 B 從集合中讀取數(shù)據(jù)時(shí),集合已經(jīng)被正確地修改。