Java中COLLECTIONS.SYNCHRONIZEDMAP怎么用

小億
117
2023-12-20 10:59:49

在Java中,可以使用Collections類的synchronizedMap方法創(chuàng)建一個(gè)同步的Map。以下是使用Collections.synchronizedMap方法的示例:

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class SynchronizedMapExample {
    public static void main(String[] args) {
        // 創(chuàng)建一個(gè)普通的HashMap
        Map<String, Integer> map = new HashMap<>();

        // 使用Collections.synchronizedMap方法創(chuàng)建一個(gè)同步的Map
        Map<String, Integer> synchronizedMap = Collections.synchronizedMap(map);

        // 向同步的Map中添加元素
        synchronizedMap.put("key1", 1);
        synchronizedMap.put("key2", 2);
        synchronizedMap.put("key3", 3);

        // 在多線程環(huán)境中遍歷同步的Map
        Runnable runnable = () -> {
            synchronized (synchronizedMap) {
                for (String key : synchronizedMap.keySet()) {
                    System.out.println(key + ": " + synchronizedMap.get(key));
                }
            }
        };

        // 創(chuàng)建兩個(gè)線程來(lái)同時(shí)遍歷同步的Map
        Thread thread1 = new Thread(runnable);
        Thread thread2 = new Thread(runnable);

        thread1.start();
        thread2.start();
    }
}

在上述示例中,首先創(chuàng)建了一個(gè)普通的HashMap。然后使用Collections.synchronizedMap方法將其轉(zhuǎn)換為同步的Map。接下來(lái)向同步的Map中添加了一些鍵值對(duì)。最后,創(chuàng)建了兩個(gè)線程來(lái)同時(shí)遍歷同步的Map,并使用synchronized關(guān)鍵字來(lái)確保同一時(shí)間只有一個(gè)線程可以訪問(wèn)Map。

0