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<String, String> map = new HashMap<>();
//        // 同步锁机制并发读写也会引发异常 java.util.ConcurrentModificationException
//        Map<String, String> map = new Hashtable<>();
        // 使用并发包下的ConcurrentHashMap不会引发并发读写异常
        Map<String, String> 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<String, String> entry : map.entrySet()) {
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue());
        }

    }

}


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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容