6.21Java多執行緒併發高階主題_定時排程問題
阿新 • • 發佈:2021-06-21
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方法*/