`

Timer执行延时任务

 
阅读更多
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 延时或重复执行任务

    android 延时或重复执行任务 Timer使用, Handler , Thread , AlarmManager

    Android 双击Back键退出应用的实现方法

    Android 双击Back键退出应用的实现方法 实现原理: 双击退出程序的原理无非就是设置一个退出标识(询问是否退出),如果...TimerTask 对象需要重写它的 run( )方法,当 Timer 执行延时任务时,则会执行 TimerTask 的

    delay-timer:延迟任务的时间管理器。 和crontab一样,但是同步异步任务是可以调度的,并且支持动态addcancelremove

    delay-timer 是一个基于时间轮算法的任务管理器,它可以轻松管理定时任务,或者定期执行闭包等任意任务。 底层运行时基于可选的 smol 和 tokio,您可以使用其中任何一个构建您的应用程序。 rustc的最低支持版本是...

    消息队列常见面试题 全解

    ScheduledThreadPool 相比于 Timer 首先可以多线程来执行任务,并且线程池对异常做了处理,使得 任务之间不会有影响。 并且 Timer 和 ScheduledThreadPool 可以周期性执行任务。 而 DelayQueue 就是个具有优先级的阻...

    android实现倒计时功能(开始、暂停、0秒结束)

    【思路】:通过 timer 执行周期延时的任务,handler 中将计时信息更新,并在计时结束时结束 timer 的周期任务。 – 在布局文件中添加一个TextView和Button控件,并在onCreate方法中获得到TextView和Button的id; xml...

    延迟任务的时间管理器。 和crontab一样,但是同步异步任务是可能的,并且支持动态添加/取消/删除。

    delay-timer 是一个基于时间轮算法的任务管理器,它可以轻松管理定时任务,或者定期执行闭包等任意任务。底层运行时基于可选的 smol 和 tokio,您可以使用其中任何一个构建您的应用程序。rustc的最低支持版本是1.49 ...

    C++11实现简易定时器的示例代码

    定时器timer是多线程编程中经常设计到的工具类 ... 单次延时任务执行 timer.hpp #ifndef _TIMER_H_ #define _TIMER_H_ #include #include #include #include #include #include #include <condit

    基于STM32F103:驱动mpu6500陀螺仪(RTOS系统)调试成功可直接使用.7z

    //任务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编写的格斗勇士游戏源代码免费放出.rar

     下面这段代码是延时代码,出现过很多次,作用是:让两张图片切换时能让我们看见,VB执行速度很快,不加入这个就会看不出来图片切换  Dim Savetime As Single  Savetime = Timer ‘记下开始的时间  While Timer ...

    Java并发编程(学习笔记).xmind

    清晰的任务边界以及明确的任务执行策略 任务边界 大多数服务器以独立的客户请求为界 在每个请求中还可以发现可并行的部分 任务执行策略 在什么(What)线程中执行任务? 任务按照...

    Android 三种延迟操作的实现方法

    Android 三种延迟操作的...----告诉主线程执行任务 } }).start  二、延时器 TimerTask task = new TimerTask(){ public void run(){ //execute the task } }; Timer timer = new Timer(); 三、Android消

    VB自动关机源码.rar

    Private shellText As String '执行的命令字符串 Private firstShow As Boolean = True Private SysTime As Boolean = False Private autoHide As Boolean = True '启动自动隐藏 Private TotalData As New ...

    电子时钟设计报告.doc

    电子时钟设计报告 1 设计任务与要求 1.1 设计任务 用STM32设计一个数字电子钟,采用LCD12864来显示并修改,时间或闹铃。 1.2 设计要求 1)显示功能:可显示时间等基本功能。 2)具有闹铃功能。 3)按键改变时间。 4...

    51单片机C语言编程基础及实例

    P3 支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部 I/O 部件:(所为学习单片机,实际上就是编程控制以下 I/O 部件,完成指定任务) 1. 四个 8 位通用 I/O 端口,对应引脚 P0、P1、P2 和 P3; 2. 两个 16 位...

    c语言编写单片机技巧

    其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。 C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多...

    VB编程资源大全(源码 其它3)

    556,delay1.zip 源码设计中的延时功能(1KB) 557,type_1.zip 趣味打字2.1(233KB) 558,test1.zip asp编写动态网页计数器(1KB) 559,hztosm.zip 汉字转声母完全源代码(90KB) 560,...

    VB编程资源大全(源码 其它1)

    556,delay1.zip 源码设计中的延时功能(1KB) 557,type_1.zip 趣味打字2.1(233KB) 558,test1.zip asp编写动态网页计数器(1KB) 559,hztosm.zip 汉字转声母完全源代码(90KB) 560,...

    VB编程资源大全(源码 其它2)

    556,delay1.zip 源码设计中的延时功能(1KB) 557,type_1.zip 趣味打字2.1(233KB) 558,test1.zip asp编写动态网页计数器(1KB) 559,hztosm.zip 汉字转声母完全源代码(90KB) 560,...

    VB编程资源大全(源码 其它4)

    556,delay1.zip 源码设计中的延时功能(1KB) 557,type_1.zip 趣味打字2.1(233KB) 558,test1.zip asp编写动态网页计数器(1KB) 559,hztosm.zip 汉字转声母完全源代码(90KB) 560,...

Global site tag (gtag.js) - Google Analytics