# 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 版本**）。

学习愉快！