线程的关闭:
针对Thread类的stop方法:
该方法具有固有的不安全性。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。
当前可以采取的线程终止模型如下:
class TestThread { public static void main(String[] args) { Thread1 t1=new Thread1(); t1.start(); int index=0; while(true) { if(index++==500) { t1.stopThread(); t1.interrupt(); break; } System.out.println(Thread.currentThread().getName()); } System.out.println("main() exit"); } } class Thread1 extends Thread { private boolean bStop=false; public synchronized void run() { while(!bStop) { try { wait(); } catch(InterruptedException e) { //e.printStackTrace(); if(bStop) return; } System.out.println(getName()); } } public void stopThread() { bStop=true; } }