美文网首页
1.7.6方法stop()与java.lang.ThreadDe

1.7.6方法stop()与java.lang.ThreadDe

作者: 农家男孩 | 来源:发表于2017-06-26 22:42 被阅读0次

    调用stop()方法时会抛出java.lang.ThreadDeath异常,但在通常的情况下,此异常不需要显式地捕捉。

    /**
     * MyThread线程测试
     * @author wuyoushan
     * @date 2017/3/21.
     */
    public class MyThread extends Thread {
    
        private int i=0;
        @Override
        public void run() {
            try {
                this.stop();
            }catch(ThreadDeath e){
                e.printStackTrace();
            }
        }
    }
    
    /**
     * @author wuyoushan
     * @date 2017/3/20.
     */
    public class Run {
        public static void main(String[] args){
            MyThread myThread=new MyThread();
            myThread.start();
        }
    }
    
    

    运行结果为:

    java.lang.ThreadDeath
        at java.lang.Thread.stop(Thread.java:836)
        at wys.test.MyThread.run(MyThread.java:14)
    
    Process finished with exit code 0
    

    方法stop()已经被作废,因为如果强制让线程停止则有可能使一些清理性的工作得不到完成。另外一个情况就是对锁定的对象进行了“解锁”,导致数据得不到同步的处理,出现数据不一致的问题。

    摘选自 java多线程核心编程技术-1.7.6

    相关文章

      网友评论

          本文标题:1.7.6方法stop()与java.lang.ThreadDe

          本文链接:https://www.haomeiwen.com/subject/wciwfxtx.html