java timer 取消_Java TimerTask示例,start,cancel,strat,启动,取消,再启动

实现一个定时任务,要求可以启动,取消,再启。

TimerTask示例:

package com.myb.timer;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Date;

import java.util.Timer;

import java.util.TimerTask;

/**

*

* 所属模块:简单的定时任务

* 类名称:MybTimeTask

* 类描述: TimerTask

* 版本:V1.0

* 创建人:牧羊仒

* 创建时间:2015年8月21日 下午1:37:31

*/

public class MybTimeTask extends TimerTask{

private Timer timer = null;

private static boolean flag = false;

private static MybTimeTask mybTimeTask = null;

private MybTimeTask(){

}

//单例模式,保持这个对象

public static MybTimeTask getInstance(){

if (mybTimeTask == null || flag ) {

//当flag == true时,为了解决,timer.cancel()后,重新创建一个timer

mybTimeTask = new MybTimeTask();

if (flag){

flag = false;

}

}

return mybTimeTask;

}

public void start(boolean flg) {

//毫秒

long time = this.getStartTime();

if (timer == null){

timer = new Timer();

} else {

//从此计时器的任务队列中移除所有已取消的任务。

timer.purge();

}

timer.scheduleAtFixedRate(this, new Date(), time);

System.out.println("定时任务开始...............");

}

public void run() {

System.out.println("定时任务执行:"+System.currentTimeMillis());

//写自己的逻辑,略

}

public void destroyed(){

System.out.println("定时任务销毁............................");

//终止此计时器,丢弃所有当前已安排的任务。(不但结束当前schedule,连整个Timer的线程(即当前的定时任务)都会结束掉)

timer.cancel();

flag = true;

}

private long getStartTime() {

//毫秒

long i = 5*1000;

return i;

}

}测试:

package com.myb.timer;

public class TestTimer {

public static void main(String[] args) {

start();

destoryed();

start();

}

private static void start(){

MybTimeTask.getInstance().start(true);

}

private static void destoryed(){

MybTimeTask.getInstance().destroyed();

}

}输出:

定时任务开始...............

定时任务销毁............................

定时任务执行:1440130170705

定时任务开始...............

定时任务执行:1440130170706

定时任务执行:1440130175707

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值