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

Java 为什么我的一些计时器根本不执行任务?,java,multithreading,timer,timertask,Java,Multithreading,Timer,Timertask,我正在开发一个多时间任务项目 首先,我设计了一些扩展TimerTask类并重写run()方法。在run()方法中,将使用当前时间打印一行 其次,计时器是这样初始化的 ...... DataTask task1 = new DataTask(); myTaskList.add(task1); DataTask task2 = new DataTask(); myTaskList.add(task2); DataTask task3 = new DataTask(); myTaskList.add(

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

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

其次,计时器是这样初始化的

......
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");
     }

}
一个线程中的一个任务。是这样吗

有时任务可以工作,但有时任务在线程仍处于活动状态时不会打印任何内容,毫无例外

这可能是什么原因

一个线程中的一个任务。是这样吗

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

一个线程中的一个任务。是这样吗


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

您可以通过编写System.currentTimeMillis()来获取时间。很多时候,定时器类的使用可以简单地通过它来实现。您可以通过编写System.currentTimeMillis()来获得时间。很多时候,定时器类的使用可以简单地通过它来实现。我知道定时器可以安排任务,并且一个任务在一个线程中。但是我不知道是什么原因造成了这个问题。需要更多的细节,你在说什么样的问题?例外情况?特别是哪些例外?我刚刚试过代码,它似乎工作正常。-1错了…他正在为每个任务创建一个新的计时器,因此每个任务都将在其自己的线程中执行。@Suraj:嗯,我确实提到过计时器在引擎盖下使用一个线程。因此,提交给同一计时器的多个任务将使用同一线程。那句话听起来有点误导,因此我更正了。谢谢你的帮助。这段代码可能可以工作,但在我调用一些SQL查询并在其中进行更新时可能会出现问题。也许1-2天,也许2周,我不知道。并没有任何异常会让我困惑。我知道定时器可以安排任务,一个任务在一个线程中。但是我不知道是什么原因造成了这个问题。需要更多的细节,你在说什么样的问题?例外情况?特别是哪些例外?我刚刚试过代码,它似乎工作正常。-1错了…他正在为每个任务创建一个新的计时器,因此每个任务都将在其自己的线程中执行。@Suraj:嗯,我确实提到过计时器在引擎盖下使用一个线程。因此,提交给同一计时器的多个任务将使用同一线程。那句话听起来有点误导,因此我更正了。谢谢你的帮助。这段代码可能可以工作,但在我调用一些SQL查询并在其中进行更新时可能会出现问题。也许1-2天,也许2周,我不知道。没有一个例外让我困惑。