为什么我的一些计时器根本不执行任务?

时间:2011-09-13 05:45:47

标签: java multithreading timer timertask

我正在开发一个多时间项目。

首先,我设计了一些扩展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");
     }

}

一个线程中的一个任务。是吗?

有时候任务有效,但是,有时任务不会打印任何东西,没有任何异常,而线程仍然存在。

这可能是什么原因?

1 个答案:

答案 0 :(得分:0)

  

一个线程中的一个任务。是吗?

不,在引擎盖下,Timer使用单个线程来安排提交的任务,但在您的情况下,因为您使用多个计时器,是的,每个任务都将在一个单独的线程中执行。如果您需要通过使用多个线程来运行多个任务,请查看并发包中的Executors。查看ExecutorService类的Javadoc示例。