2

我正在开发一个多定时器任务项目。

首先,我设计了一些扩展 TimerTask 的类并重写了 run() 方法。在 run() 方法中,将打印一行当前时间。

其次,一个 Timer 是这样初始化的。

......
DataTask task1 = new DataTask();
myTaskList.add(task1);
DataTask task2 = new DataTask();
myTaskList.add(task2);
DataTask task3 = new DataTask();
myTaskList.add(task3);
DataTask task4 = new DataTask();
myTaskList.add(task4);

for(TimerTask task : myTaskList)
{
    Timer timer = new Timer();
    timer.schedule(task,1,60*1000);
}

......

public class DataTask extends TimerTask
{
     @override
     public void run()
     {
           System.out.println("print sth");
     }

}

一个线程中的一项任务。那正确吗?

然而,有时任务工作,有时任务不会打印任何东西,没有任何异常,而线程仍然活着。

这可能是什么原因?

4

1 回答 1

0

一个线程中的一项任务。那正确吗?

不,在幕后,它Timer利用单个线程来安排提交的任务,但在您的情况下,由于您使用多个计时器,是的,每个任务都将在单独的线程中执行。如果您需要通过使用多个线程来运行多个任务,请查看并发包中的 Executors。查看ExecutorService类的 Javadoc 以获取示例。

于 2011-09-13T05:55:56.080 回答