的调试窗口,我使用日食JUNO和调试窗口,我看到这么多线程运行,并有条目什么丝毫不差线程[池485线程1]指在Eclipse
Thread [pool-485-thread-1] Running
这个条目是什么解释。
单个池中有485个线程还是485个不同池?
此条目定期增加,即现在是线程[pool-1125-thread-1]正在运行。这是一个问题吗?
的调试窗口,我使用日食JUNO和调试窗口,我看到这么多线程运行,并有条目什么丝毫不差线程[池485线程1]指在Eclipse
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;
}
}
什么标题线程[池485线程1]指...
这意味着无论是创建线程的特定线程池拟将它的意思。假设你知道线程在做什么,你应该能够计算出创建它们的内容......然后确认“显而易见”的含义是正确的。
这是问题吗?
在它的脸看起来像应用程序是反复营造线程池......这很可能意味着线程池将不能有效地回收线程。这对性能不利。
看起来像线程工厂分配的线程的默认名称。 我只能假设你正在创建新线程池而不是新线程。