本文共 1469 字,大约阅读时间需要 4 分钟。
方法一 stop方法
Thread t = new Thread(new MyThread());
t.stop();
非常不友好,该方法已经被废弃。使用该方法,线程直接停止,可能很多资源没有关闭,还有可能造成死锁。
方法二 interrupt方法
public class SleepThread implements Runnable
{ /** * 线程运行时执行的方法 */ public void run() { try { // 该线程进入阻塞状态5秒 Thread.sleep(5000); for (int i = 0; i < 500; i++) { System.out.println(Thread.currentThread().getName() + i); } } catch (InterruptedException e) { // 若调用该线程的interrupt方法,会报该异常,真实程序中可以关闭一些资源 e.printStackTrace(); } } }
package cn.xy.Thread;
public class SleepTest
{ public static void main(String[] args) { SleepThread tr = new SleepThread(); Thread t = new Thread(tr); t.start(); for (int i = 0; i < 500; i++) { System.out.println(Thread.currentThread().getName() + i); }t.interrupt(); }
}若调用该线程的interrupt方法,会报InterruptedException异常,真实程序中可以捕捉该异常并关闭一些资源。
方法三 flag
public class StopThread implements Runnable
{ private boolean flag = true;public void run()
{ while (flag) { // flag变为false后可能会完成该线程的最后一次输出 System.out.println(Thread.currentThread().getName()); } }public void shutDown()
{ System.out.println("我被shutdown了!"); flag = false; } }public class StopTest
{ public static void main(String[] args) { StopThread st = new StopThread(); Thread t = new Thread(st); t.start(); for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + i); } System.out.println("主线程结束!"); st.shutDown(); } }可以很灵活控制线程的结束,shutDown中可以关闭资源。
本文转自IT徐胖子的专栏博客51CTO博客,原文链接http://blog.51cto.com/woshixy/1058663如需转载请自行联系原作者
woshixuye111