首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >并发编程之线程管理

并发编程之线程管理

作者头像
爱撒谎的男孩
发布2018-07-04 15:24:59
发布2018-07-04 15:24:59
3960
举报
文章被收录于专栏:码猿技术专栏码猿技术专栏

并发编程之线程管理

线程的未捕获异常与监控

  • 如果线程的run方法抛出异常未被铺货(Uncaught Exception),那么随着run方法的退出,相应的线程也会提前终止。对于线程的这种异常终止,我们如何得知并做出可能的补救动作,例如重新创建并启动一个替代线程。
  • Jdk中使用UncaughtExceptionHandler接口实现了对线程的异常信息的监控和处理
    • 其中有一个uncaughtException(Thread a, Throwable e)方法,在这里我们可以将线程抛出的异常信息记录到日志中,或者开启一个替代线程继续提供服务

实例

12345678910111213141516171819202122232425262728293031323334353637383940

public class ThreadTest { public static void main(String[] args) { ErrHandler handle = null; ThreadA a = null; a = new ThreadA(); //创建线程对象 handle = new ErrHandler(); //创建UncaughtExceptionHandler a.setUncaughtExceptionHandler((UncaughtExceptionHandler) handle); a.start(); //启动 } } /** * 自定义的一个UncaughtExceptionHandler */class ErrHandler implements UncaughtExceptionHandler { /** * 这里可以做任何针对异常的处理,比如记录日志等等 * @param a : 抛出异常的线程对象 * @param e : 抛出的异常信息,可以获取异常信息 */ public void uncaughtException(Thread a, Throwable e) { //做一些日志管理 System.out.println("This is:" + a.getName() + ",Message:" + e.getMessage()); //开启一个另外的线程提供服务 System.out.println("现在执行另外一个替代线程提供服务......"); }} /** * 拥有UncaughtExceptionHandler的线程 */class ThreadA extends Thread { public void run() { double i = 12 / 0;// 抛出异常的地方 }}

线程工厂

  • http://ifeve.com/thread-management-13/
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 并发编程之线程管理
    • 线程的未捕获异常与监控
      • 实例
    • 线程工厂
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档