concurrenthashmap线程安全的原因
时间: 2023-10-08 15:10:09 浏览: 42
ConcurrentHashMap线程安全的原因是因为它使用了锁分段技术。它将整个Map分成了多个段(segment),每个段都有自己的锁。当多个线程同时访问不同的段时,它们之间不会产生竞争,因为每个线程只需要获取它所需要访问的段的锁即可。这样就大大减少了线程之间的竞争,提高了并发性能。同时,ConcurrentHashMap还使用了一些其他的技术,如volatile关键字和CAS操作等,来保证线程安全。
相关问题
为什么 concurrenthashmap 线程安全
ConcurrentHashMap 是线程安全的原因在于其内部实现了一种叫做分段锁(Segment)的机制。具体来说,ConcurrentHashMap 将其内部的数据结构分成了若干个小的段(Segment),每个 Segment 都有自己的锁。当一个线程需要访问 ConcurrentHashMap 时,只需要获得对应 Segment 的锁即可,而不需要锁住整个 ConcurrentHashMap。这种机制可以同时支持多个线程对 ConcurrentHashMap 的并发访问,从而保证了 ConcurrentHashMap 的线程安全性。
concurrenthashmap 线程阻塞
ConcurrentHashMap是一种线程安全的HashMap集合类,它采用了分段锁的机制来保证线程安全。在JDK1.8中,ConcurrentHashMap已经抛弃了原有的Segment分段锁,而采用了CAS + synchronized来保证并发安全性。因此,ConcurrentHashMap不会出现线程阻塞的情况。在ConcurrentHashMap中,每个线程只需要锁定自己所负责的那一段,而不是锁定整个HashMap,这样就可以大大提高并发性能。同时,ConcurrentHashMap采用了链地址法来解决hash冲突,这也是它能够支持高并发的重要原因之一。