我在两个不同的机器上运行相同的代码,并使用这样的Java多线程技术:
val synchronousExecutor: ThreadPoolExecutor = {
logger.info(s"max thread num is $threadNum")
val executor = new ThreadPoolExecutor(threadNum, threadNum, 60L, TimeUnit.SECONDS, new SynchronousQueue[Runnable](), threadFactory)
executor.allowCoreThreadTimeOut(true)
logger.info(s"max thread num is ${executor.getMaximumPoolSize}")
executor
}
两台计算机上的行为完全不同:当我在一台计算机中设置threadnum = 30
时,线程池中的活动线程计数始终无法达到此数字,并且池大小始终为10.但另一台计算机显示不同的结果。
我想知道为什么会发生这种情况,我该怎么办才能增加游泳池的大小。