1. 程式人生 > 其它 >6.21Java多執行緒併發高階主題_定時排程問題

6.21Java多執行緒併發高階主題_定時排程問題

6.21Java多執行緒併發高階主題_定時排程問題

Java多執行緒任務定時排程類和方法

Timer類
  • Timer:類似鬧鐘的功能,本身實現的就是一個執行緒

TimerTask類
  • TimerTask:一個抽象類,實現了Runnable介面,具備多執行緒能力

Timer類說明

  • 供將來在後臺執行緒中執行的功能。 任務可以安排一次執行,或定期重複執行。

構造方法:

Constructor描述
Timer() 建立一個新的計時器
Timer(boolean isDaemon) 建立一個新的定時器,其相關執行緒可以指定為run as a daemon
Timer(String name)
建立一個新的定時器,其相關執行緒具有指定的名稱
Timer(String name, boolean isDaemon) 建立一個新的定時器,其相關執行緒具有指定的名稱,可以指定為run as a daemon

重點方法:

方法返回型別方法名稱方法描述
void schedule(計劃)(TimerTask task(什麼任務?), long delay(多少時間、毫秒以後執行任務)) 在指定的延遲之後安排指定的任務執行
void schedule(TimeTask task, long delay, long period(隔多久時間執行的意思)) 在指定的延遲之後開始,重新執行固定延遲執行的指定任務
void schedule(TimerTask task, Date Time) 在指定的時間安排執行一次任務
void schedule(TimerTask task, Date firstTime, , long period) 從指定的時間開始,對指定的任務執行重複的固定延遲執行(執行多次任務---注意和上面多久執行一次進行區分)

TimerTask類說明

  • 可以由計時器進行一次性或重複執行的任務。

例項
package iostudy.others;

import java.util.*;

/**
* 任務定時排程,藉助Timer類和TimerTask類
* @since JDK 1.8
* @date 2021/6/21
* @author Lucifer
*/
public class TimerTestNo1 {
public static void main(String[] args) {

/*建立Timer類物件*/
Timer timer = new Timer();

/*呼叫該類下的構造方法*/
// timer.schedule(new MyTask(), 10000);
// timer.schedule(new MyTask(), 1000, 200);
Calendar calendar = new GregorianCalendar(2021, 6, 21, 19, 30, 00);
timer.schedule(new MyTask(), calendar.getTime(), 200);
}
}

/**
* 任務類、工作類。多執行緒
*/
class MyTask extends TimerTask{

/*重寫run方法*/
@Override
public void run(){

/*迴圈列印*/
for (int i=0; i<10; i++){
System.out.println("Have a rest!!!");
}
System.out.println("-----end-----");
}
}