【慕課筆記】Java定時任務調度工具詳解之Timer篇_1實踐

實踐

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
實踐一下看看:
DancingRobot.java

package com.java.study.robot;

import java.text.SimpleDateFormat;
import java.util.TimerTask;

public class DancingRobot extends TimerTask {

    @Override
    public void run() {
        // 獲取最近一次任務計劃執行的時間,並將其格式化
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("schedule exec time is "
                + sf.format(scheduledExecutionTime()));
        System.out.println("DancingRobot is dancing...");
    }
}

WaterRobot.java

package com.java.study.robot;

import java.text.SimpleDateFormat;
import java.util.Timer;
import java.util.TimerTask;

public class WaterRobot extends TimerTask {

    // 桶的最大容量假設爲5L,初始化爲0L
    private int bucketCapacity = 0;

    private Timer timer;
    // 構造器給timer賦值
    public WaterRobot(Timer timer) {
        this.timer = timer;
    }

    @Override
    public void run() {
        // 灌水直至桶滿爲止
        if (bucketCapacity < 5){
            System.out.println("WaterRobot is watering... 1L once.");
            bucketCapacity++;
        } else {
            // 水滿就停止執行任務了
            System.out.println("the bucket is full!!!");
            System.out.println("the num of canceled tasks in timer is " + timer.purge());
            cancel();
            System.out.println("the num of canceled tasks in timer is " + timer.purge());
            // 灌水任務停止後,等待兩秒, 然後停止所有任務即(DancingRobot任務也被停止)
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            timer.cancel(); //停止所有任務即(DancingRobot任務也被停止)
        }

    }
}

Executor.java

package com.java.study.robot;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;

public class Executor {
    public static void main(String[] args) {

        Timer timer = new Timer();

        // 獲取當前時間
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("current time is " + sf.format(calendar.getTime()));

        DancingRobot dr = new DancingRobot();
        WaterRobot wr = new WaterRobot(timer);  // 水滿之後停2秒,停止所有機器人任務,所以需要穿timer參數給WaterRobot

        timer.schedule(dr, calendar.getTime(), 2000);
        timer.scheduleAtFixedRate(wr, calendar.getTime(), 1000);
    }
}

執行效果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章