Java 多线程的发展和主题

Java 多线程的发展和主题

原文: https://howtodoinjava.com/java/multi-threading/java-multi-threading-evolution-and-topics/

我们的一位读者 Anant 提出了一个非常好的问题,详细阐述/列出了我们应该了解的有关多线程的所有相关主题,包括在 Java 8 中所做的更改(从入门级到高级)。 他想知道的就是 Java 中的多线程框架从简单的Runnable接口到 Java 8 的最新特性的演变。让我们解决他的查询。

我花了大量时间收集以下所有信息。 因此,如果您在任何时候有其他疑问,请随时建议在以下信息中进行编辑/更新。

每个 JDK 发行版的多线程概念

根据 JDK 1.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.2JDK 1.3 没有与多线程相关的明显变化。 (如果我错过任何事情,请纠正我)。

JDK 1.4 ,几乎没有 JVM 级别更改,可以通过一次调用挂起/恢复多个线程。 但是没有出现重大的 API 更改。

JDK 1.5 是 JDK 1.x 之后的第一个大版本; 它包括多个并发工具。 Executorsemaphoremutexbarrierlatchesconcurrent collectionsblocking queues; 所有内容均包含在此版本本身中。 Java 多线程应用程序云的最大变化发生在此版本中。

阅读此链接中的全部更改: http://docs.oracle.com/javase/1.5.0/docs/guide/concurrency/overview.html

JDK 1.6 更多的是平台修复,而不是 API 升级。 因此,JDK 1.6 中出现了新变化。

JDK 1.7 添加了对ForkJoinPool的支持,该支持实现了工作窃听技术以使吞吐量最大化。 还添加了Phaser类。

JDK 1.8 因 Lambda 更改而广为人知,但并发更改也很少。 在java.util.concurrent包中添加了两个新接口和四个新类。 CompletableFutureCompletionException

集合框架在 Java 8 中进行了重大修订,以基于新添加的流工具lambda 表达式添加聚合操作; 导致在几乎所有Collection类中以及在并发集合中添加了大量方法。

阅读此链接中的全部更改: http://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html

参考文献:

我希望上面的清单可以帮助您理解多线程特性(每个 JDK 版本)。

学习愉快!