更新時間:2020-06-09 16:18:50 來源:動力節(jié)點 瀏覽2204次
對于Java程序員而言,了解并掌握多線程是極其重要的,因為多線程在工作中的使用場景實在是太常見了。而僅僅掌握了Java中的傳統(tǒng)多線程機制還是不夠的,下面給大家介紹一下Java線程并發(fā)庫,主要包括java.util.concurrent包、java.util.concurrent.atomic包和java.util.concurrent.lock包。
1.java.util.concurrent包
java.util.concurrent包含許多線程安全、測試良好、高性能的并發(fā)構建塊。不客氣地說,創(chuàng)建java.util.concurrent的目的就是要實現Collection框架對數據結構所執(zhí)行的并發(fā)操作。通過提供一組可靠的、高性能并發(fā)構建塊,開發(fā)人員可以提高并發(fā)類的線程安全、可伸縮性、性能、可讀性和可靠性,后面、我們會做介紹。如果一些類名看起來相似,可能是因為java.util.concurrent中的許多概念源自Doug Lea的util.concurrent庫。
2.java.util.concurrent.atomic包
查看atomic包文檔頁下面的介紹,它可以對多線程的基本數據、數組中的基本數據和對象中的基本數據進行多線程的操作(AtomicInteger、AtomicIntegerArray、AtomicIntegerFieldUpDater…)
通過如下兩個方法快速理解atomic包的意義:
AtomicInteger類的boolean compareAndSet(expectedValue,updateValue);
AtomicIntegerArray類的int addAndGet(int i,int delta);
順帶解釋volatile類型的作用,需要查看java語言規(guī)范。volatile修飾的變量,線程在每次使用變量的時候,都會讀取變量修改后的最的值。(具有可見性)volatile沒有原子性。
3.java.util.concurrent.lock包
為鎖和等待條件提供一個框架的接口和類,它不同于內置同步和監(jiān)視器。該框架允許更靈活地使用鎖和條件。本包下有三大接口,下面簡單介紹下:
Lock接口:支持那些語義不同(重入、公平等)的鎖規(guī)則,可以在非阻塞式結構的上下文(包括hand-over-hand和鎖重排算法)中使用這些規(guī)則。主要的實現是ReentrantLock。
ReadWriteLock接口:以類似方式定義了一些讀取者可以共享而寫入者獨占的鎖。此包只提供了一個實現,即ReentrantReadWriteLock,因為它適用于大部分的標準用法上下文。但程序員可以創(chuàng)建自己的、適用于非標準要求的實現。
Condition接口:描述了可能會與鎖有關聯的條件變量。這些變量在用法上與使用Object.wait訪問的隱式監(jiān)視器類似,但提供了更強大的功能。需要特別指出的是,單個Lock可能與多個Condition對象關聯。為了避免兼容性問題,Condition方法的名稱與對應的Object版本中的不同。
以上就是動力節(jié)點java培訓機構的小編針對“java技術教程之線程并發(fā)庫介紹”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。