提问者:小点点

摆动计时器和耗时的任务


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

我不知道如何解决这个问题,所以任何帮助将不胜感激:)


共3个答案

匿名用户

TimeractionPerformed为实际工作创建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*/);

这可能会解决您的问题

匿名用户

您可以创建任务队列。

  1. 创建一个计时器,将您的任务移交给某个执行者。(如 ThreadPoolExecutor)。在任何延迟,定期,依此类推。
  2. 注册侦听器以完成任务。
  3. 执行者将在后台处理任务。
  4. 任务准备就绪后,通过回调通知主应用程序。

不要使用简单的线程。Java有很多并发的机器,比如Future和Executors。