java - meaning of pool number in default name of thread in ScheduledExecutorService -
i using scheduledexecutorservice maintain thread pool of core size 10
scheduledexecutorservice visiblitythreadpool = executors.newscheduledthreadpool(10);
now in log see thredname pool-39-thread-3 .
i ok thread number 3 assuming thread number can vary 1 10 how come pool number in name in 39 ?
what 39 indicates here ? please put light on it.
that string name prefix thread
objects initialized java.util.concurrent.executors$defaultthreadfactory
.
the source code of class looks like
/** * 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; } }
the number following pool-
therefore generated atomicinteger
stored in static
field. each defaultthreadfactory
instance gets "id" of sorts, representing how many others instances initialized before (+1).
since executorservice
factory methods in executors
make use of defaultthreadfactory
, can assume number represents how many thread pools created through executorservice
.
Comments
Post a Comment