咱們的一個讀者,Anant最近問了一個很是好的問題。他想要咱們闡述/列出咱們應該知道的全部關於多線程的主題以及在java 8中發生的變化。(從初級到高級)。他想知道java多線程框架從簡單的Runnable
接口到java 8最新的特性的進化過程。讓咱們來解決他的請求。html
我花了不少的時間來收集信息。因此若是你有其它見解請隨時提出來。java
對於每一個JDK 1.x版原本說,最初的版本只有不多的多線程相關的類。具體來講,類/接口以下:express
java.lang.Thread
java.lang.ThreadGroup
java.lang.Runnable
java.lang.Process
java.lang.ThreadDeath
一些異常類好比:api
java.lang.IllegalMonitorStateException
java.lang.IllegalStateException
java.lang.IllegalThreadStateException.
同時還有一些同步的集合。好比:java.util.Hashtable
多線程
JDK 1.2和JDK 1.3中沒有關於多線程的顯著改變。(若是我錯過任何事情請指正我)併發
JDK 1.4中發生了一些JVM級別的變化。它可使用單個調用來掛起/恢復多線程。可是並無主要的API產生改變。oracle
JDK 1.5 是 JDK 1.x以後的第一個重大版本;它包含了多併發工具包。Executor
, semaphore
, mutex
, barrier
, latches
, concurrent collections
和 blocking queues
;在java多多線程應用中發生的最大變化來自於該版本。框架
閱讀完整變化: http://docs.oracle.com/javase/1.5.0/docs/guide/concurrency/overview.html
ide
JDK 1.6更多的是一些平臺修復而不是API升級.工具
JDK 1.7引入了對ForkJoinPool
的支持。它實現了work-stealing technique來最大化吞吐量。Phaser
類也被添加了進來。
JDK 1.8因Lambda而被普遍所知,然而它一樣也有一些關於併發的變化。2個新的接口和4個新的類被添加進了java.util.concurrent包。好比:CompletableFuture
,CompletionException
。
爲了增長基於streams facility以及lambda expressions這些新特性的聚合操做,集合框架在java8中經歷了一個主要的修改;這樣致使大量的方法被添加進了幾乎全部的集合類,固然也包括了併發集合。
閱讀完整變化: http://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html
我但願上面列出的東西能夠幫助你理解JDK版本中的多線程特性。