当前位置: 移动技术网 > IT编程>开发语言>Java > 并发编程(二)------并发类容器ConcurrentMap

并发编程(二)------并发类容器ConcurrentMap

2018年12月26日  | 移动技术网IT编程  | 我要评论

并发类容器:

  • jdk5.0以后提供了多种并发类容器来替代同步类容器从而改善性能。
  • 同步类容器的状态都是串行化的。
  • 他们虽然实现了线程安全,但是严重降低了并发性,在多线程环境时,严重降低了应用程序的吞吐量。

concurrentmap接口下有俩个重要的实现:

  • concurrenthashmap
  • concurrentskiplistmap(支持并发排序功能)

concurrenthashmap原理:

concurrenthashmap内部使用段(segment)来表示这些不同的部分,每个段其实就是一个小的hashtable,它们有自己的锁。
只要多个修改操作发生在不同的段上,它们就可以并发进行。把一个整体分成了16个段(segment),也就是最高支持16个线程的并发修改操作。
这也是在多线程场景时减小锁的粒度从而降低锁竞争的一种方案。并且代码中大多共享变量使用volatile关键字声明,目的是第一时间获取修改的内容,性能非常好。

 1 package com.bfxy.thread.cord.collection;
 2 import java.util.map;
 3 import java.util.concurrent.concurrenthashmap;
 4 
 5 public class useconcurrentmap {
 6 
 7 public static void main(string[] args) {
 8         
 9         concurrenthashmap<string, object> map = new concurrenthashmap<>();
10         
11         map.put("k1", "v1");
12         map.put("k2", "v1");
13         map.put("k1", "vv1"); //如果元素已存在 则覆盖掉
14         map.putifabsent("k1", "vvv1"); //如果元素已存在 则不会put
15         
16         for(map.entry<string, object> me : map.entryset()){
17             system.err.println("key: " + me.getkey() + ", value: " + me.getvalue());
18         }
19         map.size();
20     }
21 
22 }

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网