1. 程式人生 > 實用技巧 >使用java自帶的times實現定時任務

使用java自帶的times實現定時任務

timer

即jdk裡面提供的java.util.Timer和java.util.TimerTask兩個類.

其中TimerTask表示具體的任務,而Timer排程任務.

簡單的例子如下:

import java.util.Timer;
import java.util.TimerTask;

public class TimerTest extends TimerTask {

    private String jobName = "";

    public TimerTest(String jobName) {
        super();
        this.jobName = jobName;
    }

    @Override
    
public void run() { System.out.println("execute " + jobName); } public static void main(String[] args) { Timer timer = new Timer(); long delay1 = 1 * 1000; long period1 = 1000; // 從現在開始 1 秒鐘之後,每隔 1 秒鐘執行一次 job1 timer.schedule(new TimerTest("job1"), delay1, period1);
long delay2 = 2 * 1000; long period2 = 2000; // 從現在開始 2 秒鐘之後,每隔 2 秒鐘執行一次 job2 timer.schedule(new TimerTest("job2"), delay2, period2); } }

當然在生產環境中Timer是不建議使用了的. 它在多執行緒的環境下, 會存在一定的問題:

1. 當一個執行緒丟擲異常時,整個timer都會停止執行.例如上面的job1丟擲異常的話, 
job2也不會再跑了.
2. 當一個執行緒裡面處理的時間非常長的話, 會影響其他job的排程. 
例如, 如果job1處理的時間要60秒的話, 那麼job2就變成了60秒跑一次了.
複製程式碼

基於上面的原因, timer現在一般都不會再使用了.

原文連結:https://juejin.im/post/6844904002606350343