timer启动停止 thread启动停止

来源:互联网 发布:淘宝店铺出售骗局 编辑:程序博客网 时间:2024/06/05 05:07

》定时任务启动停止《

import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class TimerTest {private static Timer timer = new Timer();private static long start_ms = System.currentTimeMillis();public static void main(String[] args) {System.out.println("定时程序启动,时间:" + new Date());timer.schedule(new TimerTask() {public void run() {System.out.println("定时任务执行,时间:" + new Date());long now_ms = System.currentTimeMillis();boolean canFlag = (now_ms - start_ms) > 1000 * 60;if (canFlag) {System.out.println("定时任务取消,时间:" + new Date());timer.cancel();}}}, 1000 * 5, 1000 * 10);}}


运行结果=======================

定时程序启动,时间:Thu Nov 07 11:53:27 CST 2013
定时任务执行,时间:Thu Nov 07 11:53:32 CST 2013
定时任务执行,时间:Thu Nov 07 11:53:42 CST 2013
定时任务执行,时间:Thu Nov 07 11:53:52 CST 2013
定时任务执行,时间:Thu Nov 07 11:54:02 CST 2013
定时任务执行,时间:Thu Nov 07 11:54:12 CST 2013
定时任务执行,时间:Thu Nov 07 11:54:22 CST 2013
定时任务执行,时间:Thu Nov 07 11:54:32 CST 2013
定时任务取消,时间:Thu Nov 07 11:54:32 CST 2013

运行结果=======================

》线程启动停止《


发现一篇博文,看到晚了,尤其是第2、3页,水平比我这强多了...http://developer.51cto.com/art/200812/100482.htm


线程停止有API

thread.stop();// 废弃

thread.interrupt();// 可能抛出中断异常

最好就是让线程自然的结束,

这种一般是run()方法里写while循环的情况,

如果run方法里写的不是循环,而是一次操作(非重复执行),

而这种操作可能很耗时,超过忍耐点之后要提前结束,这时可调用thread.interrupt();



import java.util.Date;public class ThreadTest implements Runnable {private boolean stopFlag = false;@Overridepublic void run() {while (!stopFlag) {try {System.out.println("模拟耗时操作..." + new Date());Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}}}public boolean isStopFlag() {return stopFlag;}public void setStopFlag(boolean stopFlag) {this.stopFlag = stopFlag;}public static void main(String[] args) {ThreadTest tt = new ThreadTest();Thread thread = new Thread(tt);System.out.println("开始线程!" + new Date());thread.start();long start = System.currentTimeMillis();while (true) {long end = System.currentTimeMillis();boolean breakFlag = (end - start) > 30 * 1000;if (breakFlag) {System.out.println("结束线程!" + new Date());tt.setStopFlag(breakFlag);break;}}}}

运行结果=======================

开始线程!Thu Nov 07 12:17:08 CST 2013
模拟耗时操作...Thu Nov 07 12:17:09 CST 2013
模拟耗时操作...Thu Nov 07 12:17:11 CST 2013
模拟耗时操作...Thu Nov 07 12:17:13 CST 2013
模拟耗时操作...Thu Nov 07 12:17:15 CST 2013
模拟耗时操作...Thu Nov 07 12:17:17 CST 2013
模拟耗时操作...Thu Nov 07 12:17:19 CST 2013
模拟耗时操作...Thu Nov 07 12:17:21 CST 2013
模拟耗时操作...Thu Nov 07 12:17:23 CST 2013
模拟耗时操作...Thu Nov 07 12:17:25 CST 2013
模拟耗时操作...Thu Nov 07 12:17:27 CST 2013
模拟耗时操作...Thu Nov 07 12:17:29 CST 2013
模拟耗时操作...Thu Nov 07 12:17:31 CST 2013
模拟耗时操作...Thu Nov 07 12:17:33 CST 2013
模拟耗时操作...Thu Nov 07 12:17:35 CST 2013
模拟耗时操作...Thu Nov 07 12:17:37 CST 2013
结束线程!Thu Nov 07 12:17:39 CST 2013

运行结果=======================


原创粉丝点击