首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swing计时器和耗时任务

Swing计时器和耗时任务
EN

Stack Overflow用户
提问于 2013-11-29 11:43:24
回答 3查看 193关注 0票数 1

我正在开发一个Swing应用程序。我需要在后台运行一些任务,因此需要在TrayIcon上显示消息。在一些固定的延迟之后,这些任务必须反复执行,所以我研究并发现Swing计时器是一个很好的选择。然而,与此同时,这些任务可能会耗费时间,而且我不希望GUI冻结或类似的东西(因此,为了满足最后的要求,我应该使用Worker代替)。问题是,工作线程不允许我以固定的延迟和“永远”的方式执行这个任务。

我不知道如何解决这一问题,因此,任何帮助都将不胜感激:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-29 11:46:24

actionPerformed of Timer为实际工作创建一个SwingWorker

票数 5
EN

Stack Overflow用户

发布于 2013-11-29 11:59:23

您不需要创建任何额外的多线程支持。计时器为在actionPerformed中运行命令创建一个新线程。或者,您也可以使用'java.util.Timer‘作为您的计时器。它比swing容易,而且每次运行时都会创建自动线程。

代码语言:javascript
复制
   import java.util.*;

在此之后,您可以添加

代码语言:javascript
复制
   Timer t=new Timer();
   t.scheduleAtFixedRate(new TimerTask(){
       void run(){
          // your codes to perform
       }, /*time in miliseconds*/);

这也许能解决你的问题

票数 1
EN

Stack Overflow用户

发布于 2013-11-29 11:49:05

您可以创建任务队列。

  1. 创建一个定时器,这将使任务分配给某个执行者。(比如ThreadPoolExecutor)。在任何延迟,定期,等等。
  2. 将侦听器注册到任务完成。
  3. 执行者将在后台处理任务。
  4. 当任务准备就绪时,通过回调通知主应用程序。

不要使用简单的线程。Java有很多相同的机制,比如未来和执行者。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20284992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档