您的位置:首页 > 编程语言 > Java开发

java线程学习3——线程的停止

2012-11-13 10:45 851 查看
方法一 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中可以关闭资源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 线程 stop interrupt