Java SwingWorker 类

2025年6月19日 | 阅读 4 分钟

Java 是一种流行的面向对象编程语言,用于创建各种平台的软件。Java 处理并发的能力,允许同时执行多个进程,是其最重要的特性之一。使用工作线程是实现 Java 并发的一种方法。本节将介绍 Java 工作线程类,包括其定义、属性以及 Java 编程应用。

SwingWorker 类是 Java 工作线程类的扩展。SwingWorker 类是一个对象,它支持耗时、耗时活动在后台执行。借助工作线程类,耗时任务可以在单独的线程中完成,而不会干扰用户界面。通过在单独的线程中执行耗时操作,应用程序将继续正常运行,用户界面将保持响应。

当您需要执行一项耗时任务,例如从网站下载大型文件或处理大量数据时,工作线程类就非常有用。如果任务在单独的线程中执行,那么用户界面可以保持响应,并且在后台进行工作时应用程序仍然可以使用。

Java SwingWorker 类属性

  1. 它扩展了 Swing Worker 类。
  2. 它在单独的线程中执行耗时任务。
  3. 它支持在任务运行时更新用户界面。
  4. 任务完成后,它可以返回值。

SwingWorker 类的使用

  1. 创建一个扩展 SwingWorker 类的类。
  2. 实现 doInBackground() 方法以在单独的线程中执行耗时任务。
  3. 实现 done() 方法以在任务完成后更新用户界面。
  4. 调用 execute() 方法以在单独的线程中启动任务。

这是一个演示如何在 Java 中使用工作线程类的示例程序

WorkerExample.java

输出

Task 0 completed
Task 1 completed
Task 2 completed
Task 3 completed
Task 4 completed
Task 5 completed
Task 96 completed
Task 97 completed
Task 98 completed
Task 99 completed

在上面的程序中,创建了一个 Swing JFrame,并配备了一个启动按钮、一个文本区域和一个进度条。当用户按下启动按钮时,应用程序会构建并运行一个工作线程对象。工作线程对象通过覆盖 doInBackground() 方法,在不同的线程中执行耗时操作。在这个示例中,耗时任务是一个循环,它向文本区域发布消息并更新进度指示器。通过使用 publish() 方法,可以在任务进行时更新用户界面。publish() 方法用于广播消息,工作线程使用 process() 方法将这些消息更新到文本区域。

任务完成后,将调用 done() 方法。在此示例中,done() 方法会将进度条重置为 0,并再次启用启动按钮。

这是结果可能类似于什么的示例

随着工作线程任务的进行,输出将在 GUI 窗口中显示并实时更新。用户还可以进一步控制 GUI,包括浏览文本区域、调整窗口大小以及再次单击“启动”按钮以启动新的工作线程任务。

输出显示,当耗时工作在不同的线程中执行时,程序会更新进度条和文本区域。

总之,Java 的工作线程类是在不同线程中管理耗时任务的有效工具。通过使用工作线程类,您可以在后台运行耗时任务的同时保持用户界面的响应。借助易于使用的工作线程类,可以在任务执行时更新用户界面。如果您需要在 Java 应用程序中完成耗时任务,请使用工作线程类来增强用户体验。