高級并發(fā)對象
到目前為止,本課程重點關(guān)注從一開始就是Java平臺一部分的低級別API,這些API適用于非常基礎(chǔ)的任務(wù),但更高級的任務(wù)需要更高級別的構(gòu)建塊,對于充分利用當(dāng)今多處理器和多核系統(tǒng)的大規(guī)模并發(fā)應(yīng)用程序尤其如此。
在本節(jié)中,我們將介紹Java平臺5.0版中引入的一些高級并發(fā)功能,大多數(shù)這些功能都在新的java.util.concurrent包中實現(xiàn),Java集合框架中還有新的并發(fā)數(shù)據(jù)結(jié)構(gòu)。
Lock對象支持簡化許多并發(fā)應(yīng)用程序的鎖定語法。
執(zhí)行器定義用于啟動和管理線程的高級API,java.util.concurrent提供的執(zhí)行器實現(xiàn)提供適用于大規(guī)模應(yīng)用程序的線程池管理。
并發(fā)集合使管理大量數(shù)據(jù)更容易,并且可以大大減少同步需求。
原子變量具有最小化同步并有助于避免內(nèi)存一致性錯誤的功能。
ThreadLocalRandom(在JDK 7中)提供從多個線程有效生成偽隨機數(shù)。
并發(fā)集合java.util.concurrent包中包括對Java集合框架的大量添加,這些最容易按照提供的集合接口進(jìn)行分類:
BlockingQueue定義了先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),當(dāng)你嘗試向滿的隊列添加或從空隊列中檢索時,該數(shù)據(jù)結(jié)構(gòu)會阻塞或超時。
ConcurrentMap是java.util.Map的子接口,它定義了有用的原子操作,僅當(dāng)鍵存在時,這些操作才會移除或替換鍵值對,或僅在鍵不存在時才添加鍵值對,使這些操作原子化有助于避免同步,ConcurrentMap的標(biāo)準(zhǔn)泛型實現(xiàn)是ConcurrentHashMap,它是HashMap的并發(fā)模擬。
ConcurrentNavigableMap是ConcurrentMap的子接口,支持近似匹配,ConcurrentNavigableMap的標(biāo)準(zhǔn)泛型實現(xiàn)是ConcurrentSkipListMap,它是TreeMap的并發(fā)模擬。
所有這些集合通過定義將對象添加到集合的操作與訪問或移除該對象的后續(xù)操作之間的先發(fā)生關(guān)系來幫助避免內(nèi)存一致性錯誤。
并發(fā)隨機數(shù)在JDK 7中,java.util.concurrent包含一個方便的類ThreadLocalRandom,用于期望使用來自多個線程或ForkJoinTasks的隨機數(shù)的應(yīng)用程序。
對于并發(fā)訪問,使用ThreadLocalRandom而不是Math.random()可以減少競爭,并最終提高性能。
你需要做的就是調(diào)用ThreadLocalRandom.current(),然后調(diào)用其中一個方法來檢索隨機數(shù),這是一個例子:
int r = ThreadLocalRandom.current().nextInt(4, 77);進(jìn)一步閱讀
Java Concurrent Animated:展示并發(fā)功能用法的動畫。
上一篇:不可變對象 下一篇:Lock對象文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/73072.html
摘要:資源獲取方式根據(jù)下面的索引,大家可以選擇自己需要的資源,然后在松哥公眾號牧碼小子后臺回復(fù)對應(yīng)的口令,就可以獲取到資源的百度云盤下載地址。公眾號二維碼如下另外本文會定期更新,松哥有新資源的時候會及時分享給大家,歡迎各位小伙伴保持關(guān)注。 沒有一條路是容易的,特別是轉(zhuǎn)行計算機這條路。 松哥接觸過很多轉(zhuǎn)行做開發(fā)的小伙伴,我了解到很多轉(zhuǎn)行人的不容易,記得松哥大二時剛剛決定轉(zhuǎn)行計算機,完全不知道這...
并發(fā) 計算機用戶想當(dāng)然地認(rèn)為他們的系統(tǒng)一次可以做不止一件事,他們設(shè)想他們可以繼續(xù)在文字處理器中工作,而其他應(yīng)用程序則下載文件、管理打印隊列和流音頻,即使是單個應(yīng)用程序通常也希望一次完成多個任務(wù)。例如,流式音頻應(yīng)用程序必須同時從網(wǎng)絡(luò)上讀取數(shù)字音頻、解壓縮、管理回放并更新其顯示,甚至文字處理器應(yīng)始終準(zhǔn)備好響應(yīng)鍵盤和鼠標(biāo)事件,無論重新格式化文本或更新顯示有多繁忙,可以執(zhí)行此類操作的軟件稱為并發(fā)軟件。 J...
Java? 教程 Java教程是為JDK 8編寫的,本頁面中描述的示例和實踐沒有利用在后續(xù)版本中引入的改進(jìn)。 Java教程是希望使用Java編程語言創(chuàng)建應(yīng)用程序的程序員的實用指南,其中包括數(shù)百個完整的工作示例和數(shù)十個課程,相關(guān)課程組被組織成教程。 覆蓋基礎(chǔ)知識的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購買。 入門 介紹Java技術(shù)和安裝Java開發(fā)軟件并使用...
以下是Java技術(shù)棧微信公眾號發(fā)布的關(guān)于 Java 的技術(shù)干貨,從以下幾個方面匯總。 Java 基礎(chǔ)篇 Java 集合篇 Java 多線程篇 Java JVM篇 Java 進(jìn)階篇 Java 新特性篇 Java 工具篇 Java 書籍篇 Java基礎(chǔ)篇 8張圖帶你輕松溫習(xí) Java 知識 Java父類強制轉(zhuǎn)換子類原則 一張圖搞清楚 Java 異常機制 通用唯一標(biāo)識碼UUID的介紹及使用 字符串...
閱讀 2571·2021-09-26 10:13
閱讀 5969·2021-09-08 10:46
閱讀 685·2019-08-30 15:53
閱讀 2957·2019-08-29 16:13
閱讀 2750·2019-08-26 12:23
閱讀 3478·2019-08-26 11:24
閱讀 1085·2019-08-23 18:09
閱讀 1028·2019-08-23 17:08