Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.util.Timer_Java_Timer - Fatal编程技术网

java.util.Timer

java.util.Timer,java,timer,Java,Timer,我点击continuous按钮,rollthedice()每秒执行两次循环,我点击stop按钮rollthedice()停止,我一直在寻找一种方法,在我点击stop之后再次点击continuous按钮,再次开始循环rollthedice()方法,停止是停止rollthedice()的连续循环但我希望能够再次按下连续按钮,idk如何操作,我一直在寻找 最新想法: if(e.getSource()==continuous) { TimerTask task = new TimerTask(

我点击continuous按钮,rollthedice()每秒执行两次循环,我点击stop按钮rollthedice()停止,我一直在寻找一种方法,在我点击stop之后再次点击continuous按钮,再次开始循环rollthedice()方法,停止是停止rollthedice()的连续循环但我希望能够再次按下连续按钮,idk如何操作,我一直在寻找

最新想法:

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();

    }
从javadoc获取:

终止此计时器,放弃所有当前计划的任务。不干扰当前正在执行的任务(如果存在)。一旦计时器被终止,它的执行线程将正常终止,并且不能在其上安排更多的任务


这意味着需要一个新的
Timer
实例来再次执行
rollthedice()
方法。

您可以改用它。这将允许您提交任务,取消任务,然后再次提交。

根据hmjd的响应,在调用schedule之前创建一个新的
计时器。
为循环创建新实例的方法是什么我尝试了此方法我出错了计时器,调度器和时间单位无法解析,因为所有这些类都是Java语言的一部分。你忘记添加导入了吗?我删除了计时器,运行程序是上面的方式,调度程序是ScheduledThreadPoolExecutor,我没有未来,idk如何停止调度程序,我对这篇文章有了新的了解。您不停止调度程序,而是取消未来。
ScheduledThreadPoolExecutor调度程序;调度器=新的ScheduledThreadPoolExecutor(1);Runnable runner=new Runnable(){public void run(){rollthedice();}};if(e.getSource()==continuous){scheduler.scheduleAtFixedRate(runner,0,500,TimeUnit.毫秒);}if(e.getSource()==stop){scheduler.shutdown();}
我希望停止按钮停止调度器,然后在单击continuous时再次启动它
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();

}