重写线程池ThreadFactory接口实现对线程异常的捕获

By | 2021年 7月 16日

重写线程池ThreadFactory接口实现对线程异常的捕获
在开发过程中经常会用到线程池,但创建线程池的方法都比较简单,使用Executors来创建相应功能的线程池,常用的方法有这些。

创建过程中最关注的参数是corePoolSize,maximumPoolSize已用来配置核心线程数和最大线程数,而KeepAliveTime,BlockingQueue,threadFactory则常被忽略,或者说不设置也无妨正常使用,但在一些特别情况下还是需要特别设置这些参数来启动线程池,这次主要来说明ThreadFactory的用处和自定义的配置。
ThreadFactory是一个接口,用户可以自己实现接口,也可以使用默认实现的,其内部只有一个方法。

Executors中有默认实现

newThread方法中对线程的命名和守护线程和线程优先级进行配置,这里我们可以加入更多自定义的功能,比如处理线程异常的方法还有在线程启动时打印日志等等,让线程池的创建和启动变得灵活可控。当异常发生时,及时打印异常情况然后通知其他服务或者重启线程进行重试等,但UncaughtExceptionHandler方法仅适用于execute()方法往线程池提交任务的情况,如果是适用submit方法则由回调get方法时来处理异常。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注