到目前爲止,本課程重點關注從一開始就是Java平臺一部分的低級別API,這些API適用於很是基礎的任務,但更高級的任務須要更高級別的構建塊,對於充分利用當今多處理器和多核系統的大規模併發應用程序尤爲如此。html
在本節中,咱們將介紹Java平臺5.0版中引入的一些高級併發功能,大多數這些功能都在新的java.util.concurrent
包中實現,Java集合框架中還有新的併發數據結構。java
java.util.concurrent
提供的執行器實現提供適用於大規模應用程序的線程池管理。java.util.concurrent
包中包括對Java集合框架的大量添加,這些最容易按照提供的集合接口進行分類:segmentfault
ConcurrentMap
的標準泛型實現是ConcurrentHashMap,它是HashMap的併發模擬。ConcurrentMap
的子接口,支持近似匹配,ConcurrentNavigableMap
的標準泛型實現是ConcurrentSkipListMap,它是TreeMap的併發模擬。全部這些集合經過定義將對象添加到集合的操做與訪問或移除該對象的後續操做之間的先發生關係來幫助避免內存一致性錯誤。api
在JDK 7中,java.util.concurrent包含一個方便的類ThreadLocalRandom,用於指望使用來自多個線程或ForkJoinTasks
的隨機數的應用程序。數據結構
對於併發訪問,使用ThreadLocalRandom
而不是Math.random()
能夠減小競爭,並最終提升性能。併發
你須要作的就是調用ThreadLocalRandom.current()
,而後調用其中一個方法來檢索隨機數,這是一個例子:oracle
int r = ThreadLocalRandom.current().nextInt(4, 77);