在一个 run
一个timertask对象的方法,如何将timertask本身提交给另一个计时器。当计时器任务运行时,我应该做一个判断并决定它是否可以做一些工作。如果它不符合条件,我应该取消它,并把它放在另一个计时器。我的timertask的代码如下:
@Override
public void run() {
try {
if (flag) {
// do something
} else {
new Timer().schedule(this, 1000 * 60);
}
} catch (Exception e) {
e.printStackTrace();
}
行吗?
1条答案
按热度按时间de90aj5v1#
你应该只用一个
Timer
然后从外部监控情况,例如从Thread
,一个Runnable
或者别的Timer
. 然后停止,取消,重新分配,根据需要从外部监视器启动计时器。这里有一个
TimerTask
:这是监视器:
请注意,在实践中
Monitor
应该也可以从外部取消,目前它运行无限。你可以这样称呼它:
另请注意
Runnable
,Timer
以及Thread
值得一看Java8的新特性,特别是未来的接口和实现它的类。