的調試窗口,我使用日食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]指...
這意味着無論是創建線程的特定線程池擬將它的意思。假設你知道線程在做什麼,你應該能夠計算出創建它們的內容......然後確認「顯而易見」的含義是正確的。
這是問題嗎?
在它的臉看起來像應用程序是反覆營造線程池......這很可能意味着線程池將不能有效地回收線程。這對性能不利。
看起來像線程工廠分配的線程的默認名稱。 我只能假設你正在創建新線程池而不是新線程。