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