说明
1、ConcurentHashMap结合了HashMap和Hashtable的优点。HashMap不考虑同步,Hashtable考虑同步。但是Hashtable每次同步都要锁定整个结构。
2、ConcurentHashMap锁的方式是稍微细粒度的。ConcurentHashMap将hash表分成16桶(默认值),如get、put、remove等常用操作只锁定目前需要的桶。
实例
/** *Createsanew,emptymapwiththedefaultinitialtablesize(16). */ publicConcurrentHashMap(){ } /** *Createsanew,emptymapwithaninitialtablesize *accommodatingthespecifiednumberofelementswithouttheneed *todynamicallyresize. * *@paraminitialCapacityTheimplementationperformsinternal *sizingtoaccommodatethismanyelements. *@throwsIllegalArgumentExceptioniftheinitialcapacityof *elementsisnegative */ publicConcurrentHashMap(intinitialCapacity){ if(initialCapacity<0) thrownewIllegalArgumentException(); intcap=((initialCapacity>=(MAXIMUM_CAPACITY>>>1))? MAXIMUM_CAPACITY: tableSizeFor(initialCapacity+(initialCapacity>>>1)+1)); this.sizeCtl=cap; } /** *Createsanewmapwiththesamemappingsasthegivenmap. * *@parammthemap */ publicConcurrentHashMap(Map<?extendsK,?extendsV>m){ this.sizeCtl=DEFAULT_CAPACITY; putAll(m); }
以上就是Java ConcurrentHashMap的介绍,希望对大家有所帮助。更多Java学习指路:Java基础
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容