Java 线程的停止
Java 线程的停止
- 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
- * */
评论暂时关闭