JUC系列03-同步容器类

1 同步容器类

同步容器类主要是指java.util.concurrent下的集合类,这些类的设计主要是用于提高多线程下的并发性能和解决并发读写问题。
主要有以下这些类
ConcurrentHashMap
ConcurrentSkipListMap
ConcurrentSkipListSet
CopyOnWriteArrayList
CopyOnWriteArraySet
以下是并发包下ConcurrentHashMap的应用示例

package com.mafgwo.juc.testvolatile;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * HashMap或HashTable并发读写引发读异常
 */
public class TestConcurrentHashMap {

    public static void main(String[] args) {
//        // 非线程安全读写会引发异常 java.util.ConcurrentModificationException
//        Map map = new HashMap<>();
//        // 同步锁机制并发读写也会引发异常 java.util.ConcurrentModificationException
//        Map map = new Hashtable<>();
        // 使用并发包下的ConcurrentHashMap不会引发并发读写异常
        Map map = new ConcurrentHashMap<>();

        // 10个线程去put
        for (int i = 0; i < 10; i++) {
            new Thread(() -> {
                for (int i1 = 0; i1 < 10; i1++) {
                    map.put(i1 + Thread.currentThread().getName(), i1 + "");
                    try {
                        Thread.sleep(200);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }

        // 主线程去遍历map
        for (Map.Entry entry : map.entrySet()) {
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue());
        }

    }

}


来源:码蜂窝-JUC系列03-同步容器类

你可能感兴趣的:(JUC系列03-同步容器类)