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;

/**
 * 
 * <b>所属模块:</b>简单的定时任务<br/> 
 * <b>类名称:</b>MybTimeTask<br/> 
 * <b>类描述:</b> TimerTask   <br/> 
 * <b>版本:</b>V1.0<br/> 
 * <b>创建人:</b><a href="mailto:han_huayi@163.com">牧羊仒</a><br/>  
 * <b>创建时间:</b>2015年8月21日 下午1:37:31<br/>
 */
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;
			}
        <span style="white-space:pre">	</span>} 
		
		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());
<span style="white-space:pre">		</span>//写自己的逻辑,略
	}
	
	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




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值