Java 同时运行两个计时器

Java 同时运行两个计时器,java,multithreading,timer,timertask,Java,Multithreading,Timer,Timertask,我有两个计时器,每个都运行不同的计时器任务。我希望timerTask1每5秒运行一次,而timerTask2每20秒运行一次 Timer timerPush = new Timer("RESTtimer");//create a new Timer Timer timerPoll = new Timer("POLLTimer");//create a new Timer timerPush.scheduleAtFixedRate(timerTask1, 0, 5000); timerPoll.

我有两个计时器,每个都运行不同的计时器任务。我希望timerTask1每5秒运行一次,而timerTask2每20秒运行一次

Timer timerPush = new Timer("RESTtimer");//create a new Timer
Timer timerPoll = new Timer("POLLTimer");//create a new Timer

timerPush.scheduleAtFixedRate(timerTask1, 0, 5000);
timerPoll.scheduleAtFixedRate(timerTask2, 0, 20000);

然而,我只看到timerTask1被执行。有人能解释一下发生了什么以及如何修复它吗?

我能想到的可能解决方案是,您可以为每个计时器生成两个线程。 第一个线程就可以了

  timerPush.scheduleAtFixedRate(timerTask1, 0, 5000);
其他的就行了

  timerPoll.scheduleAtFixedRate(timerTask2, 0, 20000);

你能解释一下现在发生了什么吗?TimerTask是否已经在自己的线程上运行?timerTask1和timerTask2是否意外引用了同一个任务?在Windows 7上使用Oracle Java 7执行时,您的代码正常工作。您共享的代码没有问题,请参阅。问题一定出在别处。@nespowerglof:那会导致一个例外。谢谢大家的帮助。错误在程序的其他地方。