我正在开发一个Swing应用程序。我需要在后台运行一些任务,因此需要在TrayIcon上显示消息。在一些固定的延迟之后,这些任务必须反复执行,所以我研究并发现Swing计时器是一个很好的选择。然而,与此同时,这些任务可能会耗费时间,而且我不希望GUI冻结或类似的东西(因此,为了满足最后的要求,我应该使用Worker代替)。问题是,工作线程不允许我以固定的延迟和“永远”的方式执行这个任务。
我不知道如何解决这一问题,因此,任何帮助都将不胜感激:)
发布于 2013-11-29 11:46:24
让actionPerformed of Timer为实际工作创建一个SwingWorker。
发布于 2013-11-29 11:59:23
您不需要创建任何额外的多线程支持。计时器为在actionPerformed中运行命令创建一个新线程。或者,您也可以使用'java.util.Timer‘作为您的计时器。它比swing容易,而且每次运行时都会创建自动线程。
import java.util.*;在此之后,您可以添加
Timer t=new Timer();
t.scheduleAtFixedRate(new TimerTask(){
void run(){
// your codes to perform
}, /*time in miliseconds*/);这也许能解决你的问题
发布于 2013-11-29 11:49:05
您可以创建任务队列。
不要使用简单的线程。Java有很多相同的机制,比如未来和执行者。
https://stackoverflow.com/questions/20284992
复制相似问题