唐僧喜欢小龙女

导航

什么时候用ConcurrentHashMap

1、以后Map 怎么用

单线程用HashMap 多线程并发读写的时候用 ConcurrentHashMap

public class CurrentHashMapDemo {

public static void main(String[] args) {


//判断当前机器最大的处理器数 就是看看是几核的cpu
System.out.println(Runtime.getRuntime().availableProcessors());
int num = Runtime.getRuntime().availableProcessors();
ThreadPoolExecutor excutors = new ThreadPoolExecutor(
1,
num,
1000, //超时等待的时间,就是345 中的窗口 这段时间没有人办理业务就要关闭,释放线程了。
TimeUnit.SECONDS,
new LinkedBlockingQueue(3),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.DiscardOldestPolicy());//其中的一个拒绝策略,



// Map map = new HashMap<>();
// Map map = new Hashtable();
// Map map = Collections.synchronizedMap(new HashMap<>());
Map map = new ConcurrentHashMap();
try{
for (int i = 0; i < 94; i++) {
excutors.execute(()->{
System.out.println(Thread.currentThread().getName()+"======ok");
map.put(Thread.currentThread().getName(),UUID.randomUUID().toString().substring(0,5));
System.out.println(map);
});

}

}catch (Exception e){
e.printStackTrace();
}finally {
excutors.shutdown();
}

}

}

 

2、什么时候用ConcurrentHashMap

并发写的时候用,以及并发读写的时候用

posted on 2021-05-22 14:42  与时具进&不忘初心  阅读(290)  评论(0编辑  收藏  举报