并发的演变

Anant,我的读者之一,问了一个嘎嘎好的问题:是否可以详细说明多线程包括java 8中的相应改进的相关主题(从入门高阶)。他想要的就是从简单的Runnable接口到java 8最新特性的多线程演变过程,我今天就满足他。
我费了九牛二虎之力终于收集到了以下信息,如果哪里不太完善,请愉快的通知我(反正我也不改)。

JDK中的多线程概念

JDK1.x版本里只有很少的类出现。具体的接口/类如下:

  • java.lang.Thread
  • java.lang.ThreadGroup
  • java.lang.Runnable
  • java.lang.Process
  • java.lang.ThreadDeath
  • 以及一些异常类,例如
  1. java.lang.IllegalMonitorStateException
  2. java.lang.IllegalStateException
  3. java.lang.IllegalThreadStateException

除此之外还有一丢丢的同步集合,例如java.util.Hashtable
JDK 1.2和1.3 在多线程这块没什么显著改变(如果有什么出入请更正)
JDK 1.4,只有一点JVM层面关于单次(single call)调用挂起(suspend)/恢复(resume)多线程的改动
JDK 1.5 算是一个大的改动,它融入了多线程并发的各种辅助类:Executor,semaphore,mutex,barrier,latches,concurrent collections 以及 blocking queues,所有的这些都被包含在了这个版本中,java多线程应用云的巨大改变正是孕育于此。

完整的变更列表看这里:http://docs.oracle.com/javase/1.5.0/docs/guide/concurrency/overview.html

JDK 1.6 相比于API的升级更多的是平台的修复,因此在这个版本中出现了一些新的API
JDK 1.7 增加对ForkJoinPool的支持,ForkJoinPool通过实现工作-窃取(work-stealing)技术来打到最大吞吐量,Phaser类也被引入
JDK 1.8 你懂的 Lambda的引入,然而在并发这块仍然没有太大改动,只有2个接口和4个类引入到了java.util.concurrent包,比如CompletableFutureCompletionException
在java 8 中,为了增加基于新添加的stream功能和lambda表达式的聚合操作,集合框架经历了一次大的修订,因此大量方法被几乎全部引入到了Collection类中,也包括并发集合。

完整的变更列表看这里:http://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html

参考:

  • https://www.cs.princeton.edu/courses/archive/fall97/cs461/jdkdocs/relnotes/intro.html
  • http://programmers.stackexchange.com/questions/147205/what-were-the-core-api-packages-of-java-1-0
  • http://docs.oracle.com/javase/1.5.0/docs/guide/concurrency/overview.html
  • http://docs.oracle.com/javase/7/docs/technotes/guides/concurrency/changes7.html
  • http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html
  • http://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html

希望上述列表能帮助你理解多线程特征的JDK版本指导
译者注:网友在评论区内的补充
1.7
TransferQueue, ConcurrentLinkedDeque, and ThreadLocalRandom

  • https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TransferQueue.html
  • https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadLocalRandom.html
  • https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentLinkedDeque.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注