首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Timer施行延时任务

2012-08-28 
Timer执行延时任务package com.jd.schduleimport java.util.Timerimport java.util.TimerTask/** * Tim

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() {@Overridepublic 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() {@Overridepublic 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: errorat 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)

热点排行