Java 线程池ThreadPoolExecutor之线程工厂

Java 提供的常用的四种线程池类的线程工厂 Executors.DefaultThreadFactory实现的

/**
     * The default thread factory
     */
    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;
        }
    }

这里也可以自己定义线程工厂,重新实现ThreadFactory中newThread (Runnable)方法,设置属性等详细等我下一次分享线程的知识。比如:

class DaemonThreadFactory implements ThreadFactory {
 
     @Override
     public Thread newThread(Runnable r) {
         // TODO Auto-generated method stub
         Thread t = new Thread(r);
         t.setDaemon(true);
         return t;
     }
 
}

 

你可能感兴趣的:(Java,进阶知识)