ConcurrentHashMap(JDK1.8)为什么要使用synchronized而不是如ReentranL,java语言,Map、set集合(后序会删除)">
    ConcurrentHashMap(JDK1.8)为什么要使用synchronized而不是如ReentranL,考点,试题,校招,校招VIP,五星,好工作,笔试,面试,一线,二线,普通公司   ">
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
        
        
        
            
            
                高效刷题  迎战校招
                校招精选试题
                近年面笔经面经群内分享
                
                扫描二维码
添加客服【小拿】备注对应群名
                
                    Java刷题群  前端刷题群  产品运营群
                
             
         
     
 
ConcurrentHashMap(JDK1.8)为什么要使用synchronized而不是如ReentranL" id="exam"/>
    
        
            
                
                    题目
                
                
                    
                        ConcurrentHashMap(JDK1.8)为什么要使用synchronized而不是如ReentranLock这样的可重入锁?
                     
                 
                
             
            
                
                    解答
                
                
                    1.减少内存开销
假设使用可重入锁来获得同步支持,那么每个节点都需要通过继承AQS来获得同步支持。但并不是每个节点都需要获得同步支持的,只有链表的头节点(红黑树的根节点)需要同步,这无疑带来了巨大内存浪费。
2.获得JVM的支持
可重入锁毕竟是API这个级别的,后续的性能优化空间很小。
synchronized则是JVM直接支持的,JVM能够在运行时作出相应的优化措施:锁粗化、锁消除、锁自旋等等。这就使得synchronized能够随着JDK版本的升级而不改动代码的前提下获得性能上的提升。
                 
                
             
            
         
        
     
 
帖子还没人回复快来抢沙发