Java多線程進化史[譯]

咱們的一個讀者,Anant最近問了一個很是好的問題。他想要咱們闡述/列出咱們應該知道的全部關於多線程的主題以及在java 8中發生的變化。(從初級到高級)。他想知道java多線程框架從簡單的Runnable接口到java 8最新的特性的進化過程。讓咱們來解決他的請求。html

我花了不少的時間來收集信息。因此若是你有其它見解請隨時提出來。java

JDK發佈多線程概念

對於每一個JDK 1.x版原本說,最初的版本只有不多的多線程相關的類。具體來講,類/接口以下:express

  • java.lang.Thread
  • java.lang.ThreadGroup
  • java.lang.Runnable
  • java.lang.Process
  • java.lang.ThreadDeath

一些異常類好比:api

  1. java.lang.IllegalMonitorStateException
  2. java.lang.IllegalStateException
  3. java.lang.IllegalThreadStateException.

同時還有一些同步的集合。好比:java.util.Hashtable多線程

JDK 1.2JDK 1.3中沒有關於多線程的顯著改變。(若是我錯過任何事情請指正我)併發

JDK 1.4中發生了一些JVM級別的變化。它可使用單個調用來掛起/恢復多線程。可是並無主要的API產生改變。oracle

JDK 1.5JDK 1.x以後的第一個重大版本;它包含了多併發工具包。Executor, semaphore, mutex, barrier, latches, concurrent collectionsblocking queues;在java多多線程應用中發生的最大變化來自於該版本。框架

閱讀完整變化: http://docs.oracle.com/javase/1.5.0/docs/guide/concurrency/overview.htmlide

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版本中的多線程特性。

相關文章
相關標籤/搜索