org.apache.curator.utils.CloseableExecutorService 默认线程

写个main方法测试Curator LeaderSelector的时候发现个奇怪的事情:

如果主线程很快结束,而没有sleep或者死循环,LeaderSelector 的takeLeadership 线程也会很快退出来。

找了很久才发现它的线程池新开线程设置成了demon。

public LeaderSelector(CuratorFramework client, String leaderPath, LeaderSelectorListener listener){

this(client, leaderPath,new CloseableExecutorService(Executors.newSingleThreadExecutor(defaultThreadFactory),true), listener);

}

private static final ThreadFactorydefaultThreadFactory = ThreadUtils.newThreadFactory("LeaderSelector");

public static ThreadFactory newThreadFactory(String processName)

{

return newGenericThreadFactory("Curator-" + processName);

}

public static ThreadFactory newGenericThreadFactory(String processName)

{

Thread.UncaughtExceptionHandler uncaughtExceptionHandler =new Thread.UncaughtExceptionHandler()

{

@Override

        public void uncaughtException(Thread t, Throwable e)

{

log.error("Unexpected exception in thread: " + t, e);

Throwables.propagate(e);

}

};

return new ThreadFactoryBuilder()

.setNameFormat(processName +"-%d")

.setDaemon(true)

.setUncaughtExceptionHandler(uncaughtExceptionHandler)

.build();

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,785评论 18 399
  • 自在的自我价值,如何去看见并认同? 之前,偶然间曾经看过这样一个小视频,一个教授举着一张钞票问同学们,有谁想要这张...
    我及我阅读 426评论 0 0
  • 人和人相遇,靠的是一点缘份!人和人相处,靠的是一点诚意,知音是贴切的默契知己是完美的深交 。这个世界上没有谁对不起...
    情海星空_422a阅读 198评论 0 6
  • 一个
    若水_e757阅读 145评论 0 0