美文网首页
JUC系列03-同步容器类

JUC系列03-同步容器类

作者: 码蜂窝 | 来源:发表于2019-03-21 08:19 被阅读0次

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-同步容器类

相关文章

网友评论

      本文标题:JUC系列03-同步容器类

      本文链接:https://www.haomeiwen.com/subject/yrefvqtx.html