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

Java 线程的停止

2011-10-24 20:47 357 查看
</br>

class Student implements Runnable
{
public boolean flag=true;
/*public void run() {
while(flag)
{

System.out.println(Thread.currentThread().getName());
}
}*/
public synchronized void run()
{
while(flag)
{
try {
wait();
System.out.println(Thread.currentThread().getName());
}catch(Exception ex)
{
System.out.println(Thread.currentThread().getName()+".......Exception");
flag=false;
}
}
}
}
public class StopThread {
public static void main(String args[])
{
Student stu=new Student();
Thread t1=new Thread (stu);
Thread t2=new Thread(stu);
t1.start();
t2.start();
for(int i=0;i<100;i++)
{
System.out.println(Thread.currentThread().getName());
stu.flag=false;
t1.interrupt();
t2.interrupt();

}
}
}
/*
* 										线程的停止
*  在多线程中,线程一般都是循环执行的,而线程里面执行的代码就是run 方法里面定义的代码,如果run 函数运行结束,那么线程自然结束
*  所以控制线程结束,就是控制run 方法里面的循环结束,也就是在某一个时刻设置线程运行的开关
*
*
*  而在线程出于wait 状态下,你尽管改变了状态,但现在处于wait 状态,所有该现在就不能结束,那么要用线程里面的另一个方法: interrupt,
*  interrupt 将清除wait sleep 的状态,接着运行程序,同时会抛出一个InterruptException ,所以可以在catch捕捉的异常里面设置 运行开关,而
*  这种方法如果里面没有wait,将不会停止线程
*
*  所以由上面两点得出,要终止现在得有两点,一是在某一时刻,设置线程的运行开关,而且如果有wait 的话,那么就用interrupt ,然后捕捉异常,在异常
*  里面设置 线程运行开关
*
* 																								2011/10/24  20:49:21
* */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: