企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Java 多线程的发展和主题 > 原文: [https://howtodoinjava.com/java/multi-threading/java-multi-threading-evolution-and-topics/](https://howtodoinjava.com/java/multi-threading/java-multi-threading-evolution-and-topics/) 我们的一位读者 Anant 提出了一个非常好的问题,详细阐述/列出了我们应该了解的有关多线程的所有相关主题,包括在 Java 8 中所做的更改(从入门级到高级)。 他想知道的就是 Java 中的多线程框架从简单的`Runnable`接口到 Java 8 的最新特性的演变。让我们解决他的查询。 我花了大量时间收集以下所有信息。 因此,如果您在任何时候有其他疑问,请随时建议在以下信息中进行编辑/更新。 ## 每个 JDK 发行版的多线程概念 根据 [**JDK 1.x 发行版**](https://www.cs.princeton.edu/courses/archive/fall97/cs461/jdkdocs/),在此初始发行版中仅存在很少的类。 具体来说,这些类/接口是: * `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** 和 **JDK 1.3** 没有与多线程相关的明显变化。 (如果我错过任何事情,请纠正我)。 **JDK 1.4** ,几乎没有 JVM 级别更改,可以通过一次调用挂起/恢复多个线程。 但是没有出现重大的 API 更改。 [**JDK 1.5**](https://docs.oracle.com/javase/1.5.0/docs/guide/concurrency/overview.html) 是 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](https://docs.oracle.com/javase/1.5.0/docs/guide/concurrency/overview.html) **JDK 1.6** 更多的是平台修复,而不是 API 升级。 因此,JDK 1.6 中出现了新变化。 [**JDK 1.7**](https://docs.oracle.com/javase/7/docs/technotes/guides/concurrency/changes7.html) 添加了对`ForkJoinPool`的支持,该支持实现了**工作窃听技术**以使吞吐量最大化。 还添加了`Phaser`类。 [**JDK 1.8**](https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html) 因 Lambda 更改而广为人知,但并发更改也很少。 在`java.util.concurrent`包中添加了两个新接口和四个新类。 `CompletableFuture`和`CompletionException`。 集合框架在 Java 8 中进行了重大修订,以基于新添加的**流工具**和 **lambda 表达式**添加聚合操作; 导致在几乎所有`Collection`类中以及在并发集合中添加了大量方法。 > 阅读此链接中的全部更改: [http://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html](https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html) #### 参考文献: * [https://www.cs.princeton.edu/courses/archive/fall97/cs461/jdkdocs/relnotes/intro.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](https://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](https://docs.oracle.com/javase/1.5.0/docs/guide/concurrency/overview.html) * [http://docs.oracle.com/javase/7/docs/technotes/guides/concurrency/changes7.html](https://docs.oracle.com/javase/7/docs/technotes/guides/concurrency/changes7.html) * [http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html](http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html) * [http://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html](https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html) 我希望上面的清单可以帮助您理解**多线程特性(每个 JDK 版本**)。 学习愉快!