Java定时器
定时器
在指定的时间或频率内完成对应的任务,比如项目中,日志需要定时清理、有些数据可能需要每天凌晨去处理,一般这种需求我们都会使用到定时器这个机制去处理他。
1、Timer
线程调度任务以供将来在后台线程中执行的功能。任务可以安排一次执行,或定期重复执行。
返回值 | 方法名&参数 | 说明 |
---|---|---|
void |
schedule(TimerTask task, Date time) |
在指定的时间(time)安排指定的任务(task)执行。 |
void |
schedule(TimerTask task, Date firstTime, long period) |
根据指定的时间(firstTime)和指定的频率(period)安排指定的任务(task)执行。 |
void |
schedule(TimerTask task, long delay) |
在指定的延迟(delay)之后开始执行任务(task) |
void |
schedule(TimerTask task, long delay, long period) |
在指定 的延迟(delay)之后开始,根据指定的频率(period)重复执行的指定任务(task)。 |
void |
cancel() |
终止此计时器,丢弃任何当前计划的任务。 |
int |
purge() |
从该计时器的任务队列中删除所有取消的任务。 |
/** * 该类位于 java.util.Timer(计时器)配合 java.util.TimerTask(计时器任务)来使用 */
public static void main(String[] args) {
Timer timer = new Timer();
long time = System.currentTimeMillis();
timer.schedule(new TimerTask() {
@Override
public void run() {
if(System.currentTimeMillis() > time + 10000){
// 取消这个定时任务
timer.cancel();
System.out.println("定时任务结束");
}
System.out.println(System.currentTimeMillis());
}
}, 0, 1000);
}
2、简易版定时器
public static void main(String[] args) {
long start = System.currentTimeMillis();
TaskTest taskTest = new TaskTest();
taskTest.schedule(5000,() -> System.out.println(System.currentTimeMillis()));
}
boolean isBreak = false;
private void cancel(){
isBreak = true;
}
public void schedule(long interval,Runnable runnable){
new Thread(() -> {
while (true) {
if(isBreak)
break;
runnable.run();
try {
Thread.sleep(interval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
今天的文章Java定时器示例分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10011.html