package com.jd.schdule;
import java.util.Timer;
import java.util.TimerTask;
/**
* Timer执行延时任务
* 缺点:
* 1、当一个Timer指定多个TimerTask时,一个TimerTask的延时可能会影响后续TimerTask的运行
* 2、当TimerTask抛出未检查异常,Timer线程将被关闭,同时也可能影响调用线程。
* 3、基于服务器绝对时间(基于绝对时间为什么是缺点??)
* Timer代替类,参见 http://medicine.iteye.com/blog/1564950
* @author yfzhangbin
*/
public class TimerTest {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("开始第一个任务");
try {
Thread.sleep(5000);
} catch(Exception e) {
e.printStackTrace();
}
if (true) {
//throw new RuntimeException("error"); // 解除注释 程序运行到此处将结束Timer线程,并抛出异常
}
System.out.println("结束第一个任务");
}
}, 1000);
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("开始第二个任务");
try {
Thread.sleep(5000);
} catch(Exception e) {
e.printStackTrace();
}
System.out.println("结束第二个任务");
}
}, 1000);
System.out.println("主线程结束!"); // 因为Timer线程非后台线程,所以主线程执行完毕后jvm不会结束。
}
}
输出:
主线程结束!
开始第一个任务
结束第一个任务
开始第二个任务
结束第二个任务
解除throw注释:
主线程结束!
开始第一个任务
Exception in thread "Timer-0" java.lang.RuntimeException: error
at com.jd.schdule.TimerTest$1.run(TimerTest.java:30)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
分享到:
相关推荐
android 延时或重复执行任务 Timer使用, Handler , Thread , AlarmManager
Android 双击Back键退出应用的实现方法 实现原理: 双击退出程序的原理无非就是设置一个退出标识(询问是否退出),如果...TimerTask 对象需要重写它的 run( )方法,当 Timer 执行延时任务时,则会执行 TimerTask 的
delay-timer 是一个基于时间轮算法的任务管理器,它可以轻松管理定时任务,或者定期执行闭包等任意任务。 底层运行时基于可选的 smol 和 tokio,您可以使用其中任何一个构建您的应用程序。 rustc的最低支持版本是...
ScheduledThreadPool 相比于 Timer 首先可以多线程来执行任务,并且线程池对异常做了处理,使得 任务之间不会有影响。 并且 Timer 和 ScheduledThreadPool 可以周期性执行任务。 而 DelayQueue 就是个具有优先级的阻...
【思路】:通过 timer 执行周期延时的任务,handler 中将计时信息更新,并在计时结束时结束 timer 的周期任务。 – 在布局文件中添加一个TextView和Button控件,并在onCreate方法中获得到TextView和Button的id; xml...
delay-timer 是一个基于时间轮算法的任务管理器,它可以轻松管理定时任务,或者定期执行闭包等任意任务。底层运行时基于可选的 smol 和 tokio,您可以使用其中任何一个构建您的应用程序。rustc的最低支持版本是1.49 ...
定时器timer是多线程编程中经常设计到的工具类 ... 单次延时任务执行 timer.hpp #ifndef _TIMER_H_ #define _TIMER_H_ #include #include #include #include #include #include #include <condit
//任务2执行次数加1 注意task1_num2加到255的时候会清零!! //printf("任务2已经执行:%d次\r\n",task2_num); if(USART_RX_STA&0x8000) { len=USART_RX_STA&0x3fff; debugcmd_process(USART_
下面这段代码是延时代码,出现过很多次,作用是:让两张图片切换时能让我们看见,VB执行速度很快,不加入这个就会看不出来图片切换 Dim Savetime As Single Savetime = Timer ‘记下开始的时间 While Timer ...
清晰的任务边界以及明确的任务执行策略 任务边界 大多数服务器以独立的客户请求为界 在每个请求中还可以发现可并行的部分 任务执行策略 在什么(What)线程中执行任务? 任务按照...
Android 三种延迟操作的...----告诉主线程执行任务 } }).start 二、延时器 TimerTask task = new TimerTask(){ public void run(){ //execute the task } }; Timer timer = new Timer(); 三、Android消
Private shellText As String '执行的命令字符串 Private firstShow As Boolean = True Private SysTime As Boolean = False Private autoHide As Boolean = True '启动自动隐藏 Private TotalData As New ...
电子时钟设计报告 1 设计任务与要求 1.1 设计任务 用STM32设计一个数字电子钟,采用LCD12864来显示并修改,时间或闹铃。 1.2 设计要求 1)显示功能:可显示时间等基本功能。 2)具有闹铃功能。 3)按键改变时间。 4...
P3 支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部 I/O 部件:(所为学习单片机,实际上就是编程控制以下 I/O 部件,完成指定任务) 1. 四个 8 位通用 I/O 端口,对应引脚 P0、P1、P2 和 P3; 2. 两个 16 位...
其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。 C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多...
556,delay1.zip 源码设计中的延时功能(1KB) 557,type_1.zip 趣味打字2.1(233KB) 558,test1.zip asp编写动态网页计数器(1KB) 559,hztosm.zip 汉字转声母完全源代码(90KB) 560,...
556,delay1.zip 源码设计中的延时功能(1KB) 557,type_1.zip 趣味打字2.1(233KB) 558,test1.zip asp编写动态网页计数器(1KB) 559,hztosm.zip 汉字转声母完全源代码(90KB) 560,...
556,delay1.zip 源码设计中的延时功能(1KB) 557,type_1.zip 趣味打字2.1(233KB) 558,test1.zip asp编写动态网页计数器(1KB) 559,hztosm.zip 汉字转声母完全源代码(90KB) 560,...
556,delay1.zip 源码设计中的延时功能(1KB) 557,type_1.zip 趣味打字2.1(233KB) 558,test1.zip asp编写动态网页计数器(1KB) 559,hztosm.zip 汉字转声母完全源代码(90KB) 560,...