【发布时间】:2016-01-13 10:27:07
【问题描述】:
我根据this article 的提醒示例测试了一个简单的 Timer 和 TimerTask。
唯一的区别是我在 timer.cancel() 之前使用条件 if。在原始示例中,线程按预期停止,但在我的代码中,它并没有停止。怎么了?
import java.util.Timer;
import java.util.TimerTask;
public class ConditionalReminder {
Timer timer;
public ConditionalReminder(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(), seconds*1000);
}
class RemindTask extends TimerTask {
int counter;
public void run() {
counter++;
System.out.format("Time's up!%n");
if(counter==100)
{
timer.cancel(); //should terminate thread
}
}
}
public static void main(String args[]) {
new ConditionalReminder(2);
System.out.format("Task scheduled.%n");
}
}
【问题讨论】:
-
它会永远运行吗?还是只有一次?
-
它永远运行 Thilo。
标签: java multithreading timer