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后,加鎖失敗時,遍歷鏈表的目的
慕工程0101907
2019-10-10 18:32:19