if(e.getSource()==continuous)
{
TimerTask task = new TimerTask()
{
public void run()
{
rollthedice();
}
};
timer.schedule(task, java.util.Calendar.getInstance().getTime(), 500);
}
if(e.getSource()==stop)
{
timer.cancel();
}
我点击了连续按钮,rollthedice()每秒执行两次循环,我点击停止按钮rollthedice()停止,我一直在找的是一种方法,在我点击停止后再次点击连续按钮开始循环rollthedice()方法再次,停止是停止连续循环的rollthedice()但我希望能够再次点击连续按钮,idk怎么做,我一直在寻找和寻找
更新了想法:
Runnable runner = new Runnable(){
public void run()
{
rollthedice();
}
}
if(e.getSource()==continuous)
{
future = scheduler.scheduleAtFixedRate(runner, 0, 500, TimeUnit.MILLISECONDS);
}
if(e.getSource()==stop)
{
future .cancel();
}
答案 0 :(得分:2)
来自Timer.cancel()
的javadoc:
终止此计时器,丢弃当前计划的任何任务。不干扰当前正在执行的任务(如果存在)。一旦计时器终止,它的执行线程就会正常终止,并且不再安排任何任务。
这意味着需要Timer
的新实例再次执行rollthedice()
方法。
答案 1 :(得分:1)
您可以使用ScheduledThreadPoolExecutor.scheduleAtFixedRate代替。这将允许您提交任务,取消它然后再次提交。