当前位置: 代码迷 >> J2SE >> java Timer,该如何处理
  详细解决方案

java Timer,该如何处理

热度:4008   发布时间:2013-02-25 00:00:00.0
java Timer
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(); }
  相关解决方案