この文字列はThread
オブジェクトの名前接頭辞で、java.util.concurrent.Executors$DefaultThreadFactory
から初期化されています。
source code of this classはpool-
次の数は、従ってstatic
フィールドに格納されAtomicInteger
から生成さ
/**
* The default thread factory
*/
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)がいくつあるかを表すソートの「id」を取得します。
こののExecutors
メイク使用されている最もExecutorService
ファクトリメソッドので、あなたも、この数は、多くのスレッドプールがExecutorService
を介して作成されたかを表していると仮定することができます。
作成されたスレッドプールの数ではありません。 'DefaultThreadFactory'インスタンスがいくつ作成されています。なぜJREが39のスレッドファクトリを作成する必要があるのか分かりませんが、必ずしも1つのスレッドまたは1つのスレッドプールを作成する必要はありません。 –
お返事ありがとうございます。私のアプリケーションでは、アプリケーションの起動時にExecutors.newScheduledThreadPoolが1回だけ呼び出されました。だから、理想的にはpool_1を表示する必要がありますが、私はDefaultThreadFactoryインスタンスをたくさん作成しているかもしれない例えばdatastaxドライバ、ユーリカのクライアント、埋め込みのtomcatなどのサードパーティの依存関係を使用していると思います。同じ気持ちですか? – Laxmikant
@Laxmikantええ、それはおそらく起こっていることです。 –