ConcurrentHashMap的增刪改查如何保證線程安全
增(put(K key, V value)):在一個for死循環(huán)中,判斷hash值對應(yīng)的數(shù)組位置上是否有值,沒有值則通過CAS操作添加數(shù)據(jù)。添加成功跳出循環(huán),添加操作結(jié)束,對數(shù)組加一。操作失敗則通過synchronized對數(shù)組中的第一個節(jié)點加鎖添加數(shù)據(jù),也即會對整條鏈表加鎖。
刪(remove(Object key)):在一個for死循環(huán)中,判斷當(dāng)前map為空,或者數(shù)組對應(yīng)的位置上為null,則表示沒有值,返回null。否則也是通過synchronized對數(shù)組中的第一個節(jié)點加鎖刪除數(shù)據(jù)。
查(get(Object key)):先判斷map不為空,對應(yīng)的數(shù)組位置上也有元素,即不能等于null,如果不滿足則返回null。然后先判斷數(shù)組位置上的這個元素是否與傳入?yún)?shù)key相等,相等則直接返回。不相等則遍歷鏈表,直到找到key相等的節(jié)點,否則返回null。
final、finally、finalize區(qū)別
final:可以用來修飾類、方法、成員變量。修飾類表示該類不能被集成,修飾方法表示該方法不能被重寫,修飾成員變量表示該成員變量的值不能被修改。
finally:一般配合try……catch使用,用來保證程序不論是正常執(zhí)行或是拋出異常或是中途return,都會執(zhí)行finally中的代碼。
finalized:這是配合GC的一個方法,在GC回收前都會先執(zhí)行該方法。但由于致命缺陷已被廢棄。
抽象類和接口的不同區(qū)別
(1)抽象類是一個類,只能被繼承,一次只能繼承一個抽象類。而接口可以被一次實現(xiàn)多個。
(2)抽象類可以有構(gòu)造方法,接口沒有。但是這兩個都不能有自己的實例對象。
(3)抽象類的修飾符可以是public、private、protect、默認(rèn),但接口只能是public(JDK8后添加了關(guān)鍵字default,但這個default不等同于抽象類的默認(rèn))。
(4)抽象類中可以有抽象方法也可以沒有抽象方法。接口中的方法都是沒有方法體的。(JDK1.8后增加了default和static關(guān)鍵字可以在接口中寫方法體)
填寫下面表單即可預(yù)約申請免費試聽!害怕學(xué)不會?助教全程陪讀,隨時解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可全國推薦就業(yè)!
初級會計職稱中級會計職稱經(jīng)濟師注冊會計師證券從業(yè)銀行從業(yè)會計實操統(tǒng)計師審計師高級會計師基金從業(yè)資格稅務(wù)師資產(chǎn)評估師國際內(nèi)審師ACCA/CAT價格鑒證師統(tǒng)計資格從業(yè)
一級建造師二級建造師消防工程師造價工程師土建職稱房地產(chǎn)經(jīng)紀(jì)人公路檢測工程師建筑八大員注冊建筑師二級造價師監(jiān)理工程師咨詢工程師房地產(chǎn)估價師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評價土地登記代理公路造價師公路監(jiān)理師化工工程師暖通工程師給排水工程師計量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導(dǎo)游考試社會工作者司法考試職稱計算機營養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護士資格證初級護師主管護師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗技師臨床醫(yī)學(xué)理論中醫(yī)理論