Java 线程监听, 意外退出线程后自动重启
业务需求: 因为作者的业务需要线程一直循环监听某个端口发过来的数据并进行分析处理. 然而发现循环某次线程出现未知错误会导致整个监听线程自动终止. 所以需要线程某次出现错误中止时可以监听到, 并且重新启动监听数据的线程. 让监听业务不会断开. 下面介绍如何实现:
首先添加一个 Listener 类, 为监听类.
然后重写监听类的 update 方法, 其实这个方法就是在线程出现未知异常, 线程被迫终止的时候调用, 因为作者想当线程出现未知错误终止的时候, 程序自动重新启动, 所以就在 update 的方法继续启动这个线程.
好了, 到这里监听类就写完了. 接下来就是线程类. 线程类除了常规实现 Runnable, 还需要继承 Observable
n
线程类除了继承的改动, 第一步: 需要添加一个 doBusiness 方法,
第二步: 则是在 run 方法进行 try catch,catch 的时候执行 doBusiness 方法, 进行监听并调用重启线程操作
(还有一个问题: 在 catch 的时候必须 break 进行跳出循环)
好了, 到了最后一个步骤了. 就是改动
main 类主线程
第三步: 需要将监听的线程通过 addObserver 方法加入执行线程里, 再启动执行线程
好了, 线程加监听功能完成.
2019-03-26
来源: http://www.jianshu.com/p/7022d4f71dc6