Timer定时器应用小例子

//实现跳舞机器人一直跳舞,倒水机器人一直倒水到水中,水满后倒水机器人停止倒水,跳舞机器人在水倒满两秒后停止跳舞

///跳舞机器人
package com.imooc.timer;

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("Scheduled exec time is:"+sf.format(scheduledExecutionTime()));
    System.out.println("Dancing happily!");
}

}
//倒水机器人

package com.imooc.timer;

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

public class WaterRobot extends TimerTask{

//timer
private Timer timer;

//最大水容量是5L
private Integer bucketCapcity = 0;

public WaterRobot(Timer inputTimer)
{
    timer = inputTimer;
}

//业务线程
@Override
public void run() {
    //灌水直至桶满为止
    if(bucketCapcity<5){
        System.out.println("Add 1L water into the bucket!");
        bucketCapcity++;
    }else{
        //水满后就停止业务线程
        cancel();
        System.out.println("The waterRobot has been aborted");
        //等待两秒钟,终止timer里面的所有内容
        try {
            //等待两秒钟停止所有的定时任务
            Thread.sleep(2000);
        } catch (Exception e) {
            e.getStackTrace();
        }
        //停止定时器的所有定时任务
        timer.cancel();
    }
}

}

//执行器
//Executor
package com.imooc.timer;

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);

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

}

1.scheduledExecutionTime() 任务的该方法返回系统预计执行的时间

2.timer.purge() 从此计时器timer的任务队列中移除所有已经取消的任务 返回队列中移除的任务数;

3.timer.canel() 终止此计时器

4.task.cancel() 终止此任务的执行

5.timer的缺点 管理并发任务的缺陷,只能一个定时任务执行完成之后再去执行另一个定时任务;
另一个就是 对异常处理的缺陷 当一个定时任务出现异常之后 ,其他的所有定时任务都会挂掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值