# 课程：Swing 中的并发

> 原文： [https://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html](https://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html)

[Examples Index](../examples/concurrency/index.html)

本课讨论适用于 Swing 编程的并发性。它假设您已经熟悉 [Essential Classes](../../essential/index.html) 路径中 [Concurrency](../../essential/concurrency/index.html) 课程的内容。

仔细使用并发对 Swing 程序员来说尤为重要。一个写得很好的 Swing 程序使用并发来创建一个永远不会“冻结”的用户界面 - 无论它在做什么，程序总是响应用户交互。要创建响应式程序，程序员必须了解 Swing 框架如何使用线程。

Swing 程序员处理以下类型的线程：

*   _ 初始线程 _，执行初始应用程序代码的线程。
*   _ 事件调度线程 _，执行所有事件处理代码。大多数与 Swing 框架交互的代码也必须在此线程上执行。
*   _ 工作线程 _，也称为 _ 后台线程 _，执行耗时的后台任务。

程序员不需要提供显式创建这些线程的代码：它们由运行时或 Swing 框架提供。程序员的工作是利用这些线程来创建响应式，可维护的 Swing 程序。

与在 Java 平台上运行的任何其他程序一样，Swing 程序可以使用“并发”课程中描述的工具创建其他线程和线程池。但是对于基本的 Swing 程序，这里描述的线程就足够了。

本课依次讨论三种线程中的每一种。工作线程需要最多的讨论，因为在它们上运行的任务是使用`javax.swing.SwingWorker`创建的。此类具有许多有用的功能，包括工作线程任务与其他线程上的任务之间的通信和协调。