》定时任务启动停止《
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;
@Override
public 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
运行结果=======================