Java Thread.join在哪里可以使用線程安全的集合框架

小樊
81
2024-10-09 13:24:44
欄目: 編程語言

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)被正確地修改。

0