- Java code
Timer timer = new Timer();tt = new timertask(loginFrame);Button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event) { try{ timer.schedule(tt, 0, 1000*60*loginFrame.getti()); }catch(IllegalStateException e){ tt.cancel();//取消任务 tt = new timertask(loginFrame);//创建新任务 timer.schedule(tt, 0, 1000*60*loginFrame.getti()); } });
通过点击,产生一个任务。如果上一个任务没有完成,则结束上一个任务,并创建一个新的任务。上面的代码可以做到这样吗?
我通过多次调试发现,可能是不能,但自己不确定。想问下大牛,如果要实现我要的效果,代码需要修改吗?如果需要修改,错误出在哪里,该怎么改?或者能够设计这样一个实验,让我实现我要的效果。
------解决方案--------------------------------------------------------
现在应该使用ScheduledExecutorService,提交一个任务返回一个Future。isDone检测是否完成、否则cancel
------解决方案--------------------------------------------------------
你这样写好像不对吧 timer.schedule()这个方法只是每个多长时间就重新执行一次操作 没有判断上一个是否结束的功能吧
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
- Java code
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);class Task implements Runnable { ... } // class Task implements Callable {...}final ScheduledFuture<?> future = scheduler.schedule(new Task(), 10, TimeUnit.SECONDS);if(!future.isDone()){ future.cancel(); }