摘要:
并發(fā)容器的簡(jiǎn)單介紹: ConcurrentHashMap代替同步的Map(Collections.synchronized(new HashMap())),眾所周知,HashMap是根據(jù)散列值分段存儲(chǔ)的,同步Map在同步的時(shí)候鎖住了所有的段,而ConcurrentHashMap加鎖的時(shí)候根據(jù)散列值鎖
閱讀全文
摘要:
為了方便編寫出線程安全的程序,Java里面提供了一些線程安全類和并發(fā)工具,比如:同步容器、并發(fā)容器、阻塞隊(duì)列、Synchronizer(比如CountDownLatch) 一.為什么會(huì)出現(xiàn)同步容器? 在Java的集合容器框架中,主要有四大類別:List、Set、Queue、Map。 List、Set
閱讀全文
摘要:
一.對(duì)ThreadLocal的理解 ThreadLocal,很多地方叫做線程本地變量,也有些地方叫做線程本地存儲(chǔ),其實(shí)意思差不多。可能很多朋友都知道ThreadLocal為變量在每個(gè)線程中都創(chuàng)建了一個(gè)副本,那么每個(gè)線程可以訪問(wèn)自己內(nèi)部的副本變量。 ThreadLocal類用來(lái)提供線程內(nèi)部的局部變量。
閱讀全文
摘要:
由于volatile關(guān)鍵字是與Java的內(nèi)存模型有關(guān)的,因此在講述volatile關(guān)鍵之前,我們先來(lái)了解一下與內(nèi)存模型相關(guān)的概念和知識(shí)。 一.內(nèi)存模型的相關(guān)概念 Java內(nèi)存模型規(guī)定所有的變量都是存在主存當(dāng)中,每個(gè)線程都有自己的工作內(nèi)存。線程對(duì)變量的所有操作都必須在工作內(nèi)存中進(jìn)行,而不能直接對(duì)主存進(jìn)
閱讀全文