java 线程监控 重启线程 观察者模式的问题的问题
问题描述
关于线程监控 重启的问题我看了http://www.cnblogs.com/ae6623...这篇文章介绍的观察者模式 我看他是把重启线程的关键代码放到了线程体中的catch块中 哪如果是没有捕获到的异常怎么办 额 我异常不太了解 那个Exception 类是所有异常都能捕获到么 ,如果这样的话 还会不会有遗漏的线程死亡原因不能监控到呢
问题解答
回答1:Exception是所有异常类的父类, catch(Exception)能捕获到所有的异常
通常异常又分为Exception和RuntimeException
Exception必须捕获, 发生异常时, 会执行catch中的业务
RuntimeException, 发生异常时, 如果不捕获会中断当前线程, 如果捕获和Exception一样
通常线程退出(死亡)的条件
线程业务执行完毕
线程发生未捕获的RuntimeException
你给的文章中重启线程的本质是让上一个线程A已经结束了(break), 调用Observable#notifyObservers()重新启动了一个线程A1,也就是说如果没有调用Observable#notifyObservers()的话, 是不会重启线程的.
所以, 如果在调用Observable#notifyObservers()之前发生了RuntimeException, 而且未捕获的话, 线程也就不会重启了.
回答2:一般情况下被观察的线程异常发生位置可以确定,在确定的位置捕捉异常并重启线程。题主连接的处理方法是可行的。
相关文章:
1. javascript - QQ第三方登录的问题2. java - 如何点击按钮,重新运行(我是初学者)?3. node.js - express框架,设置浏览器从缓存中读取静态文件,只有js从缓存中读取了,css还有一些图片为何没有从缓存中读取?4. java - web端百度网盘的一个操作为什么要分两次请求服务器, 有什么好处吗5. 前端 - @media query 使用出现的问题?6. vue.js - vue-router开启HTML5的history模式后nginx配置7. android - RxJava的使用问题。8. javascript - 请指条明路,angular的$event,在select中却是undefined?9. java - Spring boot 读取 放在 jar 包外的,log4j 配置文件,系统有创建日志文件,不写入日志信息。10. javascript - 我的站点貌似被别人克隆了, google 搜索特定文章,除了域名不一样,其他的都一样,如何解决?

网公网安备