我正在开发一个多时间项目。
首先,我设计了一些扩展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");
}
}
一个线程中的一个任务。是吗?
有时候任务有效,但是,有时任务不会打印任何东西,没有任何异常,而线程仍然存在。
这可能是什么原因?
答案 0 :(得分:0)
一个线程中的一个任务。是吗?
不,在引擎盖下,Timer
使用单个线程来安排提交的任务,但在您的情况下,因为您使用多个计时器,是的,每个任务都将在一个单独的线程中执行。如果您需要通过使用多个线程来运行多个任务,请查看并发包中的Executors。查看ExecutorService类的Javadoc示例。