java中的定时器Timer类简介

来源:互联网 发布:守望先锋看队友数据 编辑:程序博客网 时间:2024/05/29 23:21
定时器的创建:直接使用定时器类Timer
a、过多长时间后炸
new Timer().schedule(TimerTask定时任务, Date time定的时间);
b、过多长时间后炸,以后每隔多少时间再炸
new Timer().schedule(TimerTask定时任务, Long延迟(第一次执行)时间, Long间隔时间);
TimerTask与Runnable类似,有一个run方法
Timer是定时器对象,到时间后会触发炸弹(TimerTask)对象
示例:
new Timer().schedule(
new TimerTask()定时执行的任务
{
 public void run()
 {
 SOP(“bombing”);
}
显示计时信息
while (true)
{
 SOP(new Date().getSeconds());
 Thread.sleep(1000);
}
},
10 定好的延迟时间,10秒以后执行任务
);
问题:2秒后炸,爆炸后每隔3秒再炸一次
定时器2秒后炸,炸弹里还有定时器(每3秒炸一次)
class MyTimerTask extends TimerTask 这就是准备用的子母弹
{
 public void run()
 {
  本身就是一颗炸弹
  SOP(bombing);
  内部子弹
  new Timer().schedule(
new MyTimerTask(), 2000
);
 }
}
 放置子母弹,2秒后引爆
 new Timer().schedule(new MyTimerTask(), 2000);
问题延伸:
 上面的问题延伸,母弹炸过后,子弹每隔3秒炸一次,再每隔8秒炸一次
 1、在MyTimerTask内部定义一个静态变量记录炸弹号,在run方法内将炸弹号加1,每次产生新炸弹,号码就会加1,根据炸弹号判断是3秒炸还是8秒炸。
 注意:内部类中不能声明静态变量
 定义一个静态变量private static count = 0;
 在run方法内部:count=(count+1)%2;
 将定时器的时间设置为:2000+2000*count
 2、用两个炸弹来完成,A炸弹炸完后启动定时器安装B炸弹,B炸弹炸完后也启动一个定时器安装A炸弹。

定时器还可以设置具体时间,如某年某月某日某时……可以设置周一到周五做某事,自己设置的话需要换算日期时间,可以使用开源工具quartz来完成。
0 0
原创粉丝点击