java 定时任务
16lz
2021-01-26
privateScheduledExecutorServicescheduledExecutorService;scheduledExecutorService=Executors.newSingleThreadScheduledExecutor();scheduledExecutorService.scheduleAtFixedRate(newTask(),1,4,TimeUnit.SECONDS);//4s一次延迟1stask执行的一步任务scheduledExecutorService.shutdown();//停止任务
new task 实现 runable接口;
Timer存在一些缺陷:
1,Timer对调度的支持是基于绝对时间,而不是相对时间的,由此任务对系统时钟的改变是敏感的;ScheduledThreadExecutor只支持相对时间。
2,如果TimerTask抛出未检查的异常,Timer将会产生无法预料的行为。Timer线程并不捕获异常,所以TimerTask抛出的未检查的异常会终止timer线程。此时,已经被安排但尚未执行的TimerTask永远不会再执行了,新的任务也不能被调度了。
更多相关文章
- SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
- Android学习笔记-Activity的生命周期
- Android使用线程做开始暂停
- android-使用AsyncTask做下载进度条
- AsyncTask 源码解析
- handle.post 跳到主线程中执行
- Android(安卓)应用程序执行Shell命令
- Android(安卓)4.1打开相机(自己写的压力测试APK)
- Android(安卓)Data Analyse(4)--StateMachine