如何正确的使用Timer的timer schedule 取消方法

该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
需要先将Time cancel掉,再重建一个Time执行。例如:
public class TimerTest {
public static void main(String[] args){
Timer timer = new Timer();
timer.schedule(new MyTask(), );//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
while(true){//这个是用来停止此任务的,否则就一直循环执行此任务了
int ch = System.in.read();
if(ch-'c'==0){
timer.cancel();//使用这个方法退出任务
} catch (IOException e) {
e.printStackTrace();
static class MyTask extends java.util.TimerTask{
public void run() {
// TODO Auto-generated method stub
System.out.println("________");
public class MyTimerTask extends TimerTask{
public void run(){
this.cancel();new Timer().schedule(new MyTimerTask(), ); }}
不是您所需,查看更多相关问题与答案
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (7512) 次求教:JAVA中如何用timer.schedule方法控制g.drawOval,每隔3秒绘制一个圆?求教:JAVA中如何用timer.schedule方法控制g-知识宝库
你可能对下面的信息感兴趣使用 Java 中的 Timer.schedule() 定时器却没有定时执行指定任务 - 开源中国社区
当前访客身份:游客 [
当前位置:
今天试用了下 Java 自带的定时器任务执行类 java.util.Timer 和 java.util.TimerTask ,按照文档写了個测试样例,结果发现只有第壹個 timer.schedule() 方法调用是生效的,其它的全都不生效,百思不得其解,Google 了半天发现网上全是各路神仙转载的文章,却没有人遇到同样的问题。实在是很纠结,只好求助于论坛了。以下是我的代码,大家看看到底有什么问题,导致后面三個方法调用不生效。先行谢过!
public class DemoTimerTask {
public static void main(String[] args) {
java.util.Timer timer = new java.util.Timer(true);
java.util.TimerTask task = new java.util.TimerTask(){
public void run() {
System.out.println(&需要定时执行的任务...&);
java.util.Date time = new java.util.Date();
long delay = 2000;
long period = 5000;
//启动定时任务,立即执行壹次退出
timer.schedule(task, time);
//启动定时任务,在 time 指定的时间执行壹次,然后每隔两秒执行壹次
timer.schedule(task, time, delay);
//启动定时任务,从现在起过两秒执行壹次,然后退出
timer.schedule(task, delay);
//启动定时任务,从现在起过两秒以后,每隔五秒执行壹次
timer.schedule(task, delay, period);
共有8个答案
<span class="a_vote_num" id="a_vote_num_
Timer(true),要试后面几个,应该把true去掉
--- 共有 1 条评论 ---
谢谢,确实是这個地方有问题,修改成 new java.util.Timer(false) 所有的定时任务都可以执行了。
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
我去,你这要是能生效,明天的太阳就升不起来了
--- 共有 1 条评论 ---
能具体指明下嘛,我在网上找到的样例代码全是这种德行。
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
你用的是一个timer,一次当然只能执行一个了..
--- 共有 2 条评论 ---
多个后面都会报错的,取消也不行。
(3年前)&nbsp&
是的,我每次只执行壹句,然后把其它几句注释掉,但是我发现这样仍然不可行。
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
用java.util.Timer定时执行任务
参考一下这个。
<span class="a_vote_num" id="a_vote_num_
兄弟,加个这句,你的main函数已经执行完了,定时任务要保证程序没有退出
Thread.sleep(1*60*60*1000);
<span class="a_vote_num" id="a_vote_num_
引用来自“猪面狮”的答案Timer(true),要试后面几个,应该把true去掉这个才是真正的原因
<span class="a_vote_num" id="a_vote_num_
可以看下源码的,
Timer(true)是关联为守护进程的,守护进程随着关联的进程结束而结束
<span class="a_vote_num" id="a_vote_num_
换成false也没有卵用
更多开发者职位上
有什么技术问题吗?
苗哥的其它问题
类似的话题

我要回帖

更多关于 timer的schedule方法 的文章

 

随机推荐