ConcurrentHashMap(jdk1.7)put操作確定segment后,加鎖失敗時,自旋外還在遍歷鏈表,什么目的,感覺毫無意義啊privateHashEntryscanAndLockForPut(Kkey,inthash,Vvalue){HashEntryfirst=entryForHash(this,hash);HashEntrye=first;HashEntrynode=null;intretries=-1;//negativewhilelocatingnodewhile(!tryLock()){HashEntryf;//torecheckfirstbelowif(retriesMAX_SCAN_RETRIES){lock();break;}elseif((retries&1)==0&&(f=entryForHash(this,hash))!=first){e=first=f;//re-traverseifentrychangedretries=-1;}}returnnode;}改成這樣有啥問題呢:privateHashEntryscanAndLockForPut(Kkey,inthash,Vvalue){HashEntrynode=newHashEntry(hash,key,value,null);intretries=-1;//negativewhilelocatingnodewhile(!tryLock()){if(++retries>MAX_SCAN_RETRIES){lock();break;}}returnnode;}
oncurrentHashMap(jdk1.7)put操作確定segment后,加鎖失敗時,遍歷鏈表的目的各位有什么建議?
慕桂英3389331
2019-10-25 23:13:59