调度java.util.timer是否退出该计时器';什么是timerTask方法?
假设我有一个类似这样的类:调度java.util.timer是否退出该计时器';什么是timerTask方法?,java,timer,Java,Timer,假设我有一个类似这样的类: import javax.swing.*; import java.util.*; public class MyClass extends JFrame { private java.util.Timer timer = new java.util.Timer(); ... private class MyTimerTask extends TimerTask { @Override public void run() { d
import javax.swing.*;
import java.util.*;
public class MyClass extends JFrame
{
private java.util.Timer timer = new java.util.Timer();
...
private class MyTimerTask extends TimerTask
{
@Override
public void run()
{
doStuff();
if (conditionIsMet())
{
timer.schedule(new MyTimerTask(), 1000);
}
else
{
timer.schedule(new MyTimerTask(), 500);
}
}
}
}
现在我一直认为TimerTask
的run方法有点像循环。它运行一次,然后,如果您想再次运行它,可以通过调用schedule
来实现。所以我的问题是:当我调用timer.schedule()
时,它是否执行TimerTask
中的任何其他代码,或者它是否像我在循环中使用break
一样工作?如果我写的方法是这样的:
@Override
public void run()
{
doStuff();
if (conditionIsMet())
{
timer.schedule(new MyTimerTask(), 1000); // method wouldn't end after this call
}
timer.schedule(new MyTimerTask(), 500);
}
它的功能是否相同?调度计时器任务只是一个方法调用;它不会导致计时器任务的run()方法的当前执行结束,因此不会,这两个代码示例的功能不同。最好使用两个代码示例中的第一个,在run方法中只安排一次任务。因此答案是否定的