停止线程

来源:互联网 发布:手机pdf阅读器知乎 编辑:程序博客网 时间:2024/05/08 18:55
线程的停止:
  1. 停止一个线程 我们一般都会通过一个变量去控制的。
  2. 如果需要停止一个处于等待状态下的线程,那么我们需要通过变量配合notify方法或者interrupt()来使用。
  notify():被唤醒线程不会收到任何异常 只是唤醒线程池中的一个 ,不能指定唤醒哪一个

  interrupt():可以没有锁调用,会受到InterruptedException异常,可以指定清除具体的线程

public class Demo6 extends Thread {boolean flag = true;public Demo6(String name){super(name);}@Overridepublic synchronized void run() {int i = 0 ;while(flag){try {this.wait(); //狗娃等待..} catch (InterruptedException e) {System.out.println("接收到了异常了....");}System.out.println(Thread.currentThread().getName()+":"+i);i++;}}public static void main(String[] args) {Demo6 d = new Demo6("狗娃");d.setPriority(10);d.start();for(int i = 0 ; i<100 ; i++){System.out.println(Thread.currentThread().getName()+":"+i);//当主线程的i是80的时候停止狗娃线程。//d.interrupt();  // interrupt()根本就是无法停止一个线程。if(i==80){d.flag = false;d.interrupt(); //把线程的等待状态强制清除,被清除状态的线程会接收到一个InterruptedException。 /*synchronized (d) {d.notify();}*/}}}}


 
0 0
原创粉丝点击