java 线程监控 重启线程 观察者模式的问题的问题

查看:111
本文介绍了java 线程监控 重启线程 观察者模式的问题的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

关于线程监控 重启的问题我看了
http://www.cnblogs.com/ae6623...
这篇文章介绍的观察者模式 我看他是把重启线程的关键代码放到了线程体中的catch块中 哪如果是没有捕获到的异常怎么办 额 我异常不太了解 那个Exception 类是所有异常都能捕获到么 ,如果这样的话 还会不会有遗漏的线程死亡原因不能监控到呢

解决方案

Exception是所有异常类的父类, catch(Exception)能捕获到所有的异常

通常异常又分为ExceptionRuntimeException

  • Exception必须捕获, 发生异常时, 会执行catch中的业务

  • RuntimeException, 发生异常时, 如果不捕获会中断当前线程, 如果捕获和Exception一样

通常线程退出(死亡)的条件

  • 线程业务执行完毕

  • 线程发生未捕获的RuntimeException

你给的文章中重启线程的本质是让上一个线程A已经结束了(break), 调用Observable#notifyObservers()重新启动了一个线程A1,也就是说如果没有调用Observable#notifyObservers()的话, 是不会重启线程的.

所以, 如果在调用Observable#notifyObservers()之前发生了RuntimeException, 而且未捕获的话, 线程也就不会重启了.

这篇关于java 线程监控 重启线程 观察者模式的问题的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆