Java定时任务关闭

来源:互联网 发布:淘宝盗图处罚规则2016 编辑:程序博客网 时间:2024/06/06 12:51

创建定时任务时,如果我们不主动去取消定时任务,我们需要的任务内容执行完毕,但定时任务不会关闭。

启动定时任务时,相当于启动一个分线程,

下面写了两种:

一是通过定义参数,创建对象时,将定时器对象传入构造方法,从而确保我们关闭的是我们主动开启的那个任务

二是直接对当前线程进行中断、停止、销毁,后两种已经不推荐使用已经过时了


package timer;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class Demo {public static void main(String[] args) throws InterruptedException{works();}/** * 该方法验证的是有参构造方法的Works * 使用定时器取消任务 * 定时器对象如何被继承TimerTask的类获取 * @throws InterruptedException */public static void works() throws InterruptedException {Timer t1 = new Timer();Works w = new Works(t1);t1.schedule(w, 6000);for(int i=5;i>0;i--){Thread.sleep(1000);System.out.println("任务还有"+i+"s"+"开启"+"     "+"主线程线程名为:"+Thread.currentThread().getName());}while(true){Date date=new Date();SimpleDateFormat da=new SimpleDateFormat("HH:mm:ss");Thread.sleep(1000);System.out.println(da.format(date)+"    "+Thread.currentThread().getName());}}}class Works extends TimerTask{public Timer t;public String TName;/** * 构造方法,获取需要暂停的任务 * @param t1 */public Works(Timer t1) {// TODO Auto-generated constructor stubthis.t = t1;}@Overridepublic void run() {// TODO Auto-generated method stubSystem.out.println("定时任务为:该吃饭了!");System.out.println("定时任务即将关闭!");can1();//can2();}public void can1(){//for(int i=3;i>0;i--)//{//try {//Thread.sleep(1000);////} catch (InterruptedException e) {//// TODO Auto-generated catch block//e.printStackTrace();//}//TName = Thread.currentThread().getName();//System.out.println("倒计时: "+i+"s"+"    "+TName);//}//t.cancel();//System.out.println("任务已关闭");int m=10;while(m>0){try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}TName = Thread.currentThread().getName();System.out.println("定时任务仍在继续: "+m+"s"+"    "+"定时任务线程名:"+TName);m--;}t.cancel();System.out.println("任务已关闭");}public void can2() {for(int i=3;i>0;i--){try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("倒计时: "+i+"s");}//Thread.currentThread().stop();//Thread.currentThread().destroy();Thread.currentThread().interrupt();System.out.println("任务已关闭");}}


原创粉丝点击