色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

JAVA如何中斷定時任務

錢斌斌2年前232瀏覽0評論

JAVA如何中斷定時任務?

創建定時任務時,如果我們不主動去取消定時任務,我們需要的任務內容執行完畢,但定時任務不會關閉。

啟動定時任務時,相當于啟動一個分線程,

下面寫了兩種:

一是通過定義參數,創建對象時,將定時器對象傳入構造方法,從而確保我們關閉的是我們主動開啟的那個任務

二是直接對當前線程進行中斷、停止、銷毀,后兩種已經不推薦使用已經過時了

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 stub

this.t = t1;

}

@Override

public void run() {

// TODO Auto-generated method stub

System.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 block

e.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 block

e.printStackTrace();

}

System.out.println("倒計時: "+i+"s");

}

//Thread.currentThread().stop();

//Thread.currentThread().destroy();

Thread.currentThread().interrupt();

System.out.println("任務已關閉");

}

}

timer java,JAVA如何中斷定時任務