一、前言
在java中虚拟机运行时,强制将运行的线程停止(this.stop())或对于锁定的对象强制"解锁"两种场景,造成数据不一致,这是会抛出java.lang.ThreadDeath线程死亡java.lang.Error错误,详情参见代码示例部分。
二、代码示例
package test;@b@@b@public class ThreadDeathTest {@b@ @b@ private static Thread theadDemo;@b@@b@ public static void main(String[] args) throws Exception{@b@ @b@ theadDemo=new Thread(new Runnable() {@b@ @Override@b@ public void run() {@b@ try {@b@ try {@b@ theadDemo.stop();@b@ } catch (ThreadDeath e) {@b@ System.out.println("ThreadDeath模拟异常已经发生!!!");@b@ e.printStackTrace();@b@ }@b@ } catch (Exception e) {@b@ e.printStackTrace();@b@ } @b@ }@b@ });@b@ @b@ theadDemo.start();@b@ }@b@@b@}
控制台结果
ThreadDeath模拟异常已经发生!!!@b@java.lang.ThreadDeath@b@ at java.lang.Thread.stop(Thread.java:758)@b@ at test.ThreadDeathTest$1.run(ThreadDeathTest.java:14)@b@ at java.lang.Thread.run(Thread.java:662)