中断线程的一个方法

来源:互联网 发布:微赞淘宝客浏览器失败 编辑:程序博客网 时间:2024/04/28 20:11
/** *   中断线程的一个方法 * 基本思想: * 利用守护线程 */public class DaemonDemo {public static void main(String[] args) {Thread th = new Thread(new Thread1()) ;th.start();}}/** * 本类用来计时,时间一到,本线程和它的守护线程都将停止 */class Thread1 implements Runnable {private long timeLimit = 3000 ;@Overridepublic void run() {Thread th = new Thread(new Thread2()) ;//  设置为守护线程th.setDaemon(true);//  获取线程启动时间long startTime = System.currentTimeMillis() ;th.start();while( System.currentTimeMillis() - startTime < timeLimit ) {try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}//  如果线程结束了,就退出if(!th.isAlive()) break ;}//  获取运行时间long useTime = System.currentTimeMillis() - startTime ;if(th.isAlive()) {System.out.println("time limit");} else {System.out.println("over");}System.out.println("useTime:" + useTime);//  本线程结束后,守护线程也会结束执行}}/** * 要限制执行时间的线程 */class Thread2 implements Runnable {@Overridepublic void run() {for( int i = 0 ; i < 10 ; i ++ ) {System.out.println("thread2 : " + i );try {Thread.sleep(300);} catch (InterruptedException e) {e.printStackTrace();}}}}//小编本来是想写OJ的,需要找到一个方法可以安全的结束一个线程,//在网上搜集资料没有找到自己能用的方法,看到有守护线程的概念,//就写了一个demo,发现能达到中断线程的效果,不过对于它的安全性//和稳定性还不清楚,希望高手可以给指点指点.


0 0
原创粉丝点击