java 线程意外中断重启处理办法
使用观察者模式
具体代码
首先 线程需要继承Observable
public class TestServer extends Observable implements Runnable {
private static Logger logger = LoggerFactory.getLogger(TestServer.class);
enum RunnableState {
/**
* RUNNING:运行 ERROR:异常 DOWN:正常结束
*/
RUNNING, ERROR, DOWN
}
/**
* 发送通知
*
* @param event
* 通知的内容
*/
private void notifyChange(final RunnableEvent event) {
// 前面说过 JDK自带的 需要每次设置一次状态,代表当前内容更改了
System.out.print("notifyChange");
super.setChanged();
super.notifyObservers(event);
}
static class RunnableEvent {
private final RunnableState state;
private final Thread thread;
private final Throwable cause;
RunnableEvent(RunnableState state, Thread thread, Throwable cause) {
this.state = state;
this.thread = thread;
this.cause = cause;
}
RunnableState getState() {
return state;
}
public Thread get