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 * */
相关文章推荐
- java线程无法正常停止总结
- Java学习笔记之线程(六):线程的停止
- java多线程-停止线程interrupt
- 如何停止java线程
- java基础——多线程——线程停止
- Java并发学习笔记(5)停止基于线程的服务
- java多线程 ---- 停止线程
- java高级多线程编程(一)--关于线程的停止问题
- 停止java线程的方法及详解
- Java中的多线程(四)之线程的停止
- 停止Java线程,小心interrupt()方法
- java多线程学习笔记(八) ——线程停止(interrupt)
- 27、Java入门—多线程之线程的正确停止
- java通过共享变量结束run停止线程的方法示例
- Java中停止线程执行的方法
- java 多线程(1) join() / interrupt() 打断sleep() / stop() / run() / 线程停止的方法
- 停止Java线程,小心interrupt()方法
- java线程停止【一】
- java线程学习3——线程的停止
- 停止Java线程,小心interrupt()