concurrenthashmap18和17的区别?为什么ConcurrentHashMap是弱一致的?
以及优化了内存使用等方面。如果需要使用Java并发哈希表,一些方法的实现和细节上也有所不同。18版本把原来的分段锁分离成了Node数组,每个Node包含一个Key-Value的结构。而17版本是通过把锁分段来实现高效并发,具有更高的并发性能和更好的扩展性能。但并不能完全被取代DougLea也将这个判断留给用户自己决定是否使用ConcurrentHashMap,iterator都是弱一致性的。
concurrenthashmap18和17的区别?
1 concurrenthashmap18和17有一些区别2 因为concurrenthashmap是JDK中的一个并行哈希表,而18和17是针对JDK版本的区分,18版本相交于17版本有一些新的特性和改进,例如在并发处理上的性能会更好,增加了一些新的API,以及优化了内存使用等方面。
3 总体上来说,如果需要使用Java并发哈希表,建议使用18版本,因为它有更好的性能和更多的功能特性。
ConcurrentHashMap18和17的区别主要在于并发度提高了,一些方法的实现和细节上也有所不同。
在ConcurrentHashMap18中,利用类似于分组累加的方式,将数据分成了多个小的segments,每个segment都是一个类似于hashTable的结构,也拥有自己的一个锁。这样就提高了并发度,效率更高。
是有关于segment,18版本把原来的分段锁分离成了Node数组,每个Node包含一个Key-Value的结构。
而17版本是通过把锁分段来实现高效并发,每个分段锁定一个桶,减少锁的争用。
因此18版本相对于17版本来说,具有更高的并发性能和更好的扩展性能。
为什么ConcurrentHashMap是弱一致的?
Doug Lea 也将这个判断留给用户自己决定是否使用ConcurrentHashMap,而concurrenthashmap是弱一致的,iterator 都是弱一致性的,两者的迭代器的一致性不同的,clear hash table虽然性能上不如ConcurrentHashMap。 ConcurrentHashMap的get,hash table的迭代器是强一致性的,但并不能完全被取代
DougLea也将这个判断留给用户自己决定是否使用ConcurrentHashMap,而concurrenthashmap是弱一致的,iterator都是弱一致性的,两者的迭代器的一致性不同的,clear hashtable虽然性能上不如ConcurrentHashMap。ConcurrentHashMap的get,hashtable的迭代器是强一致性的,但并不能完全被取代
hashmap和concurrenthashmap的区别,hashmap的底层源码?
你好。
有并发访问的时候用ConcurrentHashMap,效率比用锁的HashMap好 功能上可以,但是毕竟ConcurrentHashMap这种数据结构要复杂些,如果能保证只在单一线程下读写,不会发生并发的读写,那么就可以试用HashMap。ConcurrentHashMap读不加锁,写...