1.Timer().schedule创建任务:基于封装类Timer
<1>常见格式为new Timer(String name.boolean isDaemon).schedule(new TimeTask(){}…)
(1)Timer为定时器 TimeTask为Runnable
(2)每个Timer都有一个TaskQuene和TimerThread
Timer负责生产定时任务放在TaskQuene中,TimerThread不停的监听TaskQuene,如果里面有任务,则执行第一个,并将其删除 【生产者消费者模式】
(3)new Timer(“A”,false) 第一个参数为定时器名称 第二个参数为是否是守护线程
(4)A\B\C\D为计时器的四种常规实现方法,\E\F为补充方法
<2>实现方法A
new Timer("A",false).schedule(new TimerTask() {
@Override
public void run() {
count++;
Log.d("177777","new Timer(A) 首次延迟5s执行,每隔1s执行一次"+count);
}
},5000,1000);
<2>实现方法B
new Timer("B",false).schedule(new TimerTask() {
@Override
public void run() {
Log.d("177777","new Timer(B) 延迟1s执行");
}
},1000);
<3>实现方法C
final SimpleDateFormat sdf = new SimpleDateFormat("2022-11-27 '12:25:55'");
Date time = null;
try {
time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(sdf.format(new Date()));
} catch (ParseException e) {
e.printStackTrace();
}
new Timer("C",false).schedule(new TimerTask() {
@Override
public void run() {
Log.d("177777","C任务在2022年11月27日12点25分55秒执行一次");
}
},time);
<4>实现方法D
new Timer("D",false).schedule(new TimerTask() {
@Override
public void run() {
Log.d("177777","D任务在2022年11月27日12点25分55秒执行一次,之后每隔1s执行一次");
}
},time,1000);
<5>实现方法E
new Timer("E").scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
Log.d("177777","E任务首次5秒之后执行一次任务,之后每隔1s执行一次");
}
},5000,1000);
<6>实现方法F
new Timer("F").scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
Log.d("177777","F任务在2022年11月27日12点25分55秒执行一次,之后每隔1s执行一次");
}
},time,1000);
转载请注明出处