关于线程 意外死亡 自动重启的问题
public class TestThread {
private Thread thread1;
public static void main(String[] args) {
TestThread t = new TestThread();
t.createTread1();
}
/*
* 启动线程
*/
public void createTread1(){
thread1 = new Thread(new ThreadI());
thread1.start();
}
/*
* 判断线程是否死亡,重启线程
*/
public void resetThread1(){
System.out.println("是否存活: "+thread1.isAlive());
if(!thread1.isAlive())
{
createTread1();
}
}
/*
* 伺服线程
*/
class ThreadI implements Runnable {
private int temp = 0;
public void run() {
try{
while (true) {
try {
if(temp>=10)
throw new RuntimeException();
System.out.println("------------循环显示中---------");
Thread.sleep(2000);
temp++;
} catch (Exception e) {
break;
}
}
}finally{
System.out.println("后判断 是否存活");
//try {
// Thread.currentThread().join();
//} catch (InterruptedException e) {
// e.printStackTrace();
//}
resetThread1();
}
}
}
}
以上程序 是我初步的设想 但是这样不能达到我的要求 因为当在finally块中调用 resetThread1方法是 线程并不认为run()方法已经结束,也就是没有死亡.
我想到了另外一个方法,就是不在本线程中 设置重启,另起一个伺服线程 每隔 一段时间 判断本线程是否存活,这样可以实现,但是 一起启动两个伺服线程 我认为很耗内存 ,不知各位高人 有没有好的解决办法 启动一个伺服线程就能解决 意外死亡自动重启 的问题。先谢过了
相关推荐
Java线程监听,意外退出线程后自动重启的实现方法
下面小编就为大家带来一篇Java线程监听,意外退出线程后自动重启的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java线程池及观察者模式解决多线程意外死亡重启问题
Java线程池及观察者模式解决多线程意外死亡重启问题,附件含两个要运行代码!
解决jupyter运行pyqt代码内核重启的问题
在jupyter notebook或者是 Qtconsole下编译运行一个简单的pyqt程序,总是报错: The kernel appears to have died. It will restart automatically. from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import sys app = QApplication(sys.argv) window = QWidget(); window.show() app.exec_() 在网上找了半天原因,
java、杀死启动进程、定时执行程序、隐藏黑窗口(dos窗口)、线程异常死亡(保活)
java、杀死启动进程、定时执行程序、隐藏黑窗口(dos窗口)、线程异常死亡(保活):就是java自动重启JBOSS
Java理论与实践:嗨,我的线程到哪里去了?
本文介绍了当线程从应用程序中消失时会引起混乱,并且在很多情况下,线程消失时没有(堆栈)跟踪。像对付许多风险一样,防止线程泄漏的最佳方法是预防和检测相结合;注意有可能抛出RuntimeException的地方(如调用外来代码时),并使用ThreadGroup提供的uncaughtException处理程序来在线程异常终止时进行检测。


Java SE
