wb_it_man 2021-06-24 13:47 采纳率: 66.7%
浏览 42
已采纳

ExecutorService创建线程池后,我创建的线程是否会自动加入这个线程池

        //线程池
        ExecutorService pool = Executors.newCachedThreadPool();

        //创建100个线程
        for(int i = 0; i < count; i++){
            MyThread target = new MyThread("para1", "para2", "para3", countDownLatch);

        }

 

如何查看我的线程池里有多少线程?

 

  • 写回答

2条回答 默认 最新

  • 笔下天地宽 2021-06-24 15:25
    关注

    不会,你这个线程池是无参的,使用的是默认线程工厂,想要使用自己的线程的话,需要把线程放到线程工厂中。

    public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory) {
            return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                          60L, TimeUnit.SECONDS,
                                          new SynchronousQueue<Runnable>(),
                                          threadFactory);
        }

    默认的线程工厂是这个:

     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;
            }
        }

    也可以自己实现覆盖~

    如果觉得回答对你有帮助的话,可采纳~~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?