我正在使用eclipse juno,并且在调试窗口中看到正在运行的线程太多,并且有条目

Thread [pool-485-thread-1] Running


此项解释什么。
一个池中有485个线程,还是有485个不同的池?
该条目有规律地增加,即现在正在运行线程[pool-1125-thread-1]。这有问题吗?

最佳答案

这很可能来自DefaultThreadFactory类(如下所示)。这表明自从JVM启动以来您已经创建了485池,并且该线程是第485池中的第一个线程。

如果这些池是在很长一段时间内创建和销毁的,则不一定表明存在严重的问题。但是,继续像这样创建线程池有点奇怪-也许值得看一下代码,看看是否可以重用某些线程池(这可能有助于提高应用程序的性能)。

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

09-27 02:12