文章目录
- 一、Timer 定时器基本使用
- 二、Timer 定时器常用用法
- 三、Timer 源码分析
- 四、Timer 部分源码注释
- 五、源码及资源下载
参考文档 :
- Timer 定时器 API 文档
- TimerTask 定时器任务 API 文档
Timer 可用于执行延迟任务或循环任务 ; 下面是定时器最基本用法 ;
1 . Timer 定时器基本使用 :
- 创建 Timer 定时器 : 调用构造函数创建定时器 Timer timer = new Timer() ;
- 分配 TimerTask 定时器任务 : 调用定时器的 schedule 方法 , 为 Timer 定时器分配 TimerTask 定时器任务 ;
timer.schedule(new TimerTask() {
@Override
public void run() {
// ...
}
}, 1_000);
2 . 定时器任务执行规则 : Timer 执行任务是 串行执行 的 , 同一时间只能执行一个任务 ;
在下面的示例中
- 任务 1 在 1 秒之后执行 , 在第 6 秒执行完毕 ;
- 任务 2 在第 6 秒 , 任务 1 执行完毕后 , 才开始执行 , 在第 11 秒执行完毕 ;
3 . 代码示例 :
private void timer(){
// Timer 可用于执行延迟任务或循环任务
Timer timer = new Timer();
/*
如果提交多个 TimerTask 定时器任务
需要等待之前的 定时器任务 执行完成 , 才能执行后面的任务
TimerTask 实现了 Runnable 接口
延迟 1 秒执行任务 1 ( 任务 1 时长 5 秒 )
延迟 2 秒执行任务 2 ( 任务 2 时长 5 秒 )
Timer 执行任务是串行执行的 , 同一时间只能执行一个任务
任务 1 在 1 秒之后执行 , 在第 6 秒执行完毕
任务 2 在第 6 秒 , 任务 1 执行完毕后 , 才开始执行 , 在第 11 秒执行完毕
*/
// 延迟 1 秒执行任务 1
timer.schedule(new TimerTask() {
@Override
public void run() {
Log.i(TAG, "延迟 1 秒执行 5 秒的任务 1 开始执行");
try {
Thread.sleep(5_000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i(TAG, "延迟 1 秒执行 5 秒的任务 1 执行完毕");
}
}, 1_000);
// 延迟 2 秒执行任务 2
timer.schedule(new TimerTask() {
@Override
public void run() {
Log.i(TAG, "延迟 2 秒执行 5 秒的任务 2 开始执行");
try {
Thread.sleep(5_000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i(TAG, "延迟 2 秒执行 5 秒的任务 2执行完毕");
}
}, 2_000);
}
二、Timer 定时器常用用法
1 . Timer 定时器构造函数 :
① 创建默认定时器 : 默认以 “Timer-序列号” 作为定时器线程名称 ;
public Timer() { this("Timer-" + serialNumber()); }
② 创建守护线程定时器 : 指定定时器是否作为守护线程来执行 , 定时器线程名称是默认名称 ;
public Timer(boolean isDaemon) { this("Timer-" + serialNumber(), isDaemon); }
③ 创建定时器并指定定时器名称 : 创建定时器 , 并 设置定时器线程名称 ;
public Timer(String name) {
thread.setName(name);
thread.start();
}
④ 指定名称并设置守护线程 : 同时 设置定时器名称 , 并 设置定时器是否是守护线程 ;
public Timer(String name, boolean isDaemon) {
thread.setName(name);
thread.setDaemon(isDaemon);
thread.start();
}
2 . 定时器调度方法 :
① 在指定一段时间后执行定时器任务 : 在 delay 毫秒后 , 执行 TimerTask 定时器任务 ;
public void schedule(TimerTask task, long delay) {
if (delay
关注
打赏
热门博文
- 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )
- 【Android Gradle 插件】Gradle 构建生命周期 ③ ( BuildListener 构建监听器 | TaskExecutionGraphListener 任务执行图监听器 )
- 【Android Gradle 插件】Gradle 构建生命周期 ② ( Gradle 类的添加构建生命周期监听器函数 | Gradle#addListener 函数 )
- 【Android Gradle 插件】Gradle 构建生命周期 ① ( 分析构建脚本 | 执行初始化配置 | 执行 Gradle 任务 | Project#beforeEvaluate 函数 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑨ ( 控制 Gradle 执行任务顺序 | Task#finalizedBy 函数 | 控制 Gradle 执行任务顺序示例分析 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑧ ( 控制 Gradle 执行任务顺序 | Task#shouldRunAfter 函数 | 三个函数使用场景对比 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑦ ( 控制 Gradle 执行任务顺序 | Task#dependsOn 函数 | Task#mustRunAfter 函数 )
- 【数学分析】集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )
- 【数学分析】学科简介 ( 初等数学缺陷 | 微分与积分 | 学习数学分析的目的 | 数学分析与高等数学对比 )
- 【Android Gradle 插件】自定义 Gradle 任务 ③ ( Gradle 自定义任务创建方法 Project#task 函数 | Task#doFirst 函数用法 )