我正在开发一个 Swing 应用程序。我需要在后台运行一些任务,因此需要在 TrayIcon 上显示消息。这些任务必须在一些固定的延迟后重复执行,所以我研究并发现摆动计时器是一个不错的选择。但是,与此同时,这些任务可能很耗时,我不希望 GUI 冻结或类似的东西(因此,为了满足最后一个要求,我应该改用工作线程)。问题是工作线程不允许我以一些固定的延迟和“永远”执行此任务。
我不知道如何解决这个问题,所以任何帮助将不胜感激:)
让Timer
的actionPerformed
为实际工作创建SwingWorker
。
你不需要创建任何额外的多线程支持。定时器创建一个新线程来运行actionPerformmed中的命令。或者,你也可以使用“java. util.Timer”作为你的定时器。它比摆动更容易,每次运行时它也会创建自动线程。
import java.util.*;
在此之后,您可以添加
Timer t=new Timer();
t.scheduleAtFixedRate(new TimerTask(){
void run(){
// your codes to perform
}, /*time in miliseconds*/);
这可能会解决您的问题
您可以创建任务队列。
不要使用简单的线程。Java有很多并发的机器,比如Future和Executors。