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