源码阅读 -线程池:线程池原理(九)相关接口介绍

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lidelin10/article/details/100032294

这篇文章将会介绍:1、ThreadFactory接口;2、RejectExecutionHandler接口,该文章只是让众位知道有这两个接口存在,无任何深度,不喜,跳过即可

1、ThreadFactory线程工厂接口,用于线程池创建线程

public interface ThreadFactory {
    Thread newThread(Runnable r);
}

下面是ThreadPoolExecutor默认采用的线程工厂

static class DefaultThreadFactory implements ThreadFactory {
    private static final AtomicInteger poolNumber = new AtomicInteger(1);
    private final ThreadGroup group;
    private final AtomicInteger threadNumber = new AtomicInteger(1);
    private final String namePrefix;


    DefaultThreadFactory() {
        SecurityManager s = System.getSecurityManager();
        group = (s != null) ? s.getThreadGroup() :
                              Thread.currentThread().getThreadGroup();
        namePrefix = "pool-" +
                      poolNumber.getAndIncrement() +
                     "-thread-";
    }


    public Thread newThread(Runnable r) {
        Thread t = new Thread(group, r,
                              namePrefix + threadNumber.getAndIncrement(),
                              0);
        if (t.isDaemon())
            t.setDaemon(false);
        if (t.getPriority() != Thread.NORM_PRIORITY)
            t.setPriority(Thread.NORM_PRIORITY);
        return t;
    }
}

通过调用Executors.defaultThreadFactory()获取DefaultThreadFactory

2、RejectedExecutionHandler–当线程池的状态不支持添加新的任务时采取的拒绝策略

线程池提供4种实现
1、CallerRunsPolicy – 使用调用者线程运行该任务
2、AbortPolicy – 抛出抛出RejectedExecutionException异常
3、DiscardPolicy – 忽略该reject调用
4、DiscardOldestPolicy – 丢弃工作任务队列中poll出来的第一个任务

猜你喜欢

转载自blog.csdn.net/lidelin10/article/details/100032294
今日推荐