tittle Thread [pool-485-thread-1]在eclipse的调试窗口中意味着什么

时间:2013-10-15 12:54:50

标签: java eclipse

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

Thread [pool-485-thread-1] Running

这篇文章解释了什么 是单个池中有485个线程还是485个不同的池? 这个条目经常增加,即它现在是Thread [pool-1125-thread-1] Running。这是一个问题吗?

3 个答案:

答案 0 :(得分:4)

这很可能来自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;
    }
}

答案 1 :(得分:1)

  

标题Thread [pool-485-thread-1]的含义是什么......

这意味着创建该Thread意味着它的特定线程池。假设你知道线程在做什么,你应该能够找出创建它们的内容......然后确认“明显”的含义是正确的。

  

这是一个问题吗?

从表面来看看起来就像应用程序重复创建线程池一样......这很可能意味着线程池在回收线程时无效。这对表现不利。

答案 2 :(得分:1)

这看起来像是线程工厂分配的线程的默认名称。 我只能假设您正在创建新的线程池而不是新线程。