ConcurrentMap-并发map

mac2024-08-12  52

ConcurrentMap-并发map

HashMap:线程不安全 HashTable:线程安全的 一个人来操作是,锁住整表,底层用的是Synchronoused同步代码库 ConcurrentMap:线程安全的 默认分为16个桶,每个桶加锁,如果数据量达到一定大小,桶会翻倍 每个桶的元素达到8个以上,数据结构就会变为红黑二叉树(左旋、右旋) 所以,它的效率特别高

package cn.tedu.map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentNavigableMap; import java.util.concurrent.ConcurrentSkipListMap; import org.junit.Test; public class ConcurrentMapDemo1 { @Test public void createmap(){ ConcurrentMap<String,String> cm = new ConcurrentHashMap<String,String>(); cm.put("one", "1"); cm.put("two", "2"); cm.put("three", "3"); System.out.println(cm.get("two")); } @Test public void CNMTest(){ ConcurrentNavigableMap<Integer,String> map = new ConcurrentSkipListMap<Integer,String>(); map.put(1, "one"); map.put(2, "two"); map.put(3, "three"); map.put(4, "fore"); map.put(5, "five"); //含头不含尾 //ConcurrentNavigableMap<Integer, String> headMap = map.headMap(2); //System.out.println(headMap.size());//1 /*ConcurrentNavigableMap<Integer, String> tailMap = map.tailMap(3); System.out.println(tailMap.size());//3*/ ConcurrentNavigableMap<Integer, String> subMap = map.subMap(2, 4); System.out.println(subMap.size());//2 } }
最新回复(0)