你好,我有这个自定义的TimerTask:
public class TimerTaskPerso extends TimerTask {
private static boolean i = false;
@Override
public void run() {
System.out.println(i);
if(i){
System.out.println("m here");
return;
}
i= true;
System.out.println("ok");
try {
Thread.sleep(3000);
} catch (InterruptedException ignored) {
}
System.out.println("bye");
i= false;
}
}
我这样称呼它:
new Timer().schedule(new TimerTaskPerso(), 1,500);
但是任务一直显示:
false
ok
bye
false
ok
false
我应该看到“在这里”消息,我没有创建Custom TimerTask并使用AtomicBoolean进行了尝试,但结果相同。]
谢谢,
你好,我有这个自定义的TimerTask:公共类TimerTaskPerso扩展了TimerTask {private static boolean i = false; @Override public void run(){System.out.println(i); if(i){...
TimerTask
的运行方法启动时,i
将为false
为什么您认为它将打印"m here"
作为输出。您正在再次设置i=false
。因此它不会打印该消息。为了打印该消息,您应该注释此行i= false;
。注释完此行后,IDE中的输出为: