1.7.6方法stop()与java.lang.threadDeath异常

调用stop方法时会抛出java.lang.ThreadDeath异常,但一般情况下这个异常不需要显示的捕捉

 1 package com.cky.thread;
 2
 3 /**
 4  * Created by edison on 2017/12/3.
 5  */
 6 public class MyThread extends Thread{
 7     @Override
 8     public void run() {
 9         super.run();
10         try {
11            this.stop();
12         } catch (ThreadDeath e) {
13             e.printStackTrace();
14         }
15     }
16 }
 1 package com.cky.test;
 2
 3 import com.cky.thread.MyThread;
 4
 5 /**
 6  * Created by edison on 2017/12/3.
 7  */
 8 public class Test {
 9     public static void main(String[] args) {
10             MyThread th = new MyThread();
11             th.start();
12     }
13 }
C:\itsoft\jdk\bin\java -Didea.launcher.port=7533 "-Didea.launcher.bin.path=C:\itsoft\idea\IntelliJ IDEA 2016.3.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\itsoft\jdk\jre\lib\charsets.jar;C:\itsoft\jdk\jre\lib\deploy.jar;C:\itsoft\jdk\jre\lib\ext\access-bridge-32.jar;C:\itsoft\jdk\jre\lib\ext\cldrdata.jar;C:\itsoft\jdk\jre\lib\ext\dnsns.jar;C:\itsoft\jdk\jre\lib\ext\jaccess.jar;C:\itsoft\jdk\jre\lib\ext\jfxrt.jar;C:\itsoft\jdk\jre\lib\ext\localedata.jar;C:\itsoft\jdk\jre\lib\ext\nashorn.jar;C:\itsoft\jdk\jre\lib\ext\sunec.jar;C:\itsoft\jdk\jre\lib\ext\sunjce_provider.jar;C:\itsoft\jdk\jre\lib\ext\sunmscapi.jar;C:\itsoft\jdk\jre\lib\ext\sunpkcs11.jar;C:\itsoft\jdk\jre\lib\ext\zipfs.jar;C:\itsoft\jdk\jre\lib\javaws.jar;C:\itsoft\jdk\jre\lib\jce.jar;C:\itsoft\jdk\jre\lib\jfr.jar;C:\itsoft\jdk\jre\lib\jfxswt.jar;C:\itsoft\jdk\jre\lib\jsse.jar;C:\itsoft\jdk\jre\lib\management-agent.jar;C:\itsoft\jdk\jre\lib\plugin.jar;C:\itsoft\jdk\jre\lib\resources.jar;C:\itsoft\jdk\jre\lib\rt.jar;C:\多线程核心技术\第一章\out\production\第一章;C:\itsoft\idea\IntelliJ IDEA 2016.3.3\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain com.cky.test.Test
java.lang.ThreadDeath
    at java.lang.Thread.stop(Thread.java:853)
    at com.cky.thread.MyThread.run(MyThread.java:12)

Process finished with exit code 0

方法stop已经作废

因为如果强制让线程停止则会使得一些清理性的工作得不到完成,另外一个就是对锁定对象进行解锁,导致数据得不到同步处理,出现数据不一致。

时间: 2024-11-08 20:29:09

1.7.6方法stop()与java.lang.threadDeath异常的相关文章

sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class异常解决方法

package com.wzs; import java.lang.reflect.ParameterizedType; public class T1<T> {     private Class classt;     public T1() {         ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();         this.classt = (Class)

java.lang.IllegalThreadStateException异常原因解析——同一个线程不能重复调用start方法

前几天写了个小程序,运行的时候发现在循环第二遍的时候出现了java.lang.IllegalThreadStateException异常通过上网查询发现同一个Thread不能重复调用start方法,做如下修改就好了:将自己定义的SellTicket extends Thread 线程类改成SellTicket implements Runnable,后用new Thread(robot).start 就可以启动多次了

Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法

使用 Struts2 编写页面,遇到一个要长时间运行的接口,因此增加了一个execAndWait ,结果在 Action 中调用 getContext()的时候报告异常 1 ActionContext context = ActionContext.getContext(); 2 ServletContext servletContext = (ServletContext) context.get(ServletActionContext.SERVLET_CONTEXT); //抛空指针异常

多线程之同步synchronized的使用不当造成java.lang.IllegalMonitorStateException 异常

package com.bjsxt.d822.a2; public class SubThread9 extends Thread { /* * 当多个对象同时对同一个资源操作,则必须使用同步机制来控制. * * 1.当方法去操作共享资源时,则该方法必须通过 synchronized关键字来修饰. * 2.当方法被 synchronized 关键字修饰时,还需要 wait() 和 notify()两个方法配合使用. * wait()方法是让当前线程对象进入等待状态. * notify()方法是让

response.sendRedirect 报 java.lang.IllegalStateException 异常的解决思路

今天在进行代码开发的时候,出现了 java.lang.IllegalStateException异常,response.sendRedirect("./DEFAULT.html"); 这一条语句出错. 在网上进行查找之后,发现问题很有可能是因为response.sendRedirect方法执行了两次,其中一次肯定是项目框架里面的跳转,而我自己要进行跳转的话,就显得极其不方便,最后我把目光放到前端页面,在前端页面进行跳转. 一开始我的前端语句是:window.location.href=

JSON中 net.sf.json.JSONException: java.lang.NoSuchMethodException异常

在json对象和java对象转换时 String s = "{'name':'name1','pwd':'pwd1'}"; Person p = (Person)JSONObject.toBean(JSONObject.fromObject(s), Person.class); System.out.println(p.getPwd()); 上面代码中出现以下异常: net.sf.json.JSONException: java.lang.NoSuchMethodException [

关于 java 上传,下载和导入报java.lang.IllegalStateException异常解决办法

java.lang.IllegalStateException异常解决办法 最近在使用response.sendRedirect()时出现如下错误:java.lang.IllegalStateException            org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:423) 经过分析.查看jdk文档终于找到解决的办法,在response.sendRedirect()方法后加

带你玩转java多线程系列 一 java.lang.IllegalThreadStateException异常

java的线程状态和java.lang.IllegalThreadStateException异常 文章结构: 1 阐明java声明周期的六种状态 2 由于自己操作错误,对同一个线程实例同时调用了两次start方法从而抛了java.lang.IllegalThreadStateException这个异常 3 超哥带你分析为啥抛了这个异常 4 超哥想看到赞 哈哈 1 阐明java声明周期的六种状态 线程的生命周期有六种,由Thread.State枚举类表示,线程的状态可以用getState方法来查

com.netflix.hystrix.contrib.javanica.exception.FallbackDefinitionException: fallback method wasn&#39;t found: serviceError([class java.lang.String]) 异常

在使用spring cloud 的 Hystrix 后可能会遇到 如下截图错误: 后台代码如下: 找了好一会经过分析参数方法和原方法参数步一致造成: 修改后代码如下: com.netflix.hystrix.contrib.javanica.exception.FallbackDefinitionException: fallback method wasn't found: serviceError([class java.lang.String]) 异常 原文地址:https://www.c