咱们的一个读者,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版本中的多线程特性。