我对java.util.concurrent有一些经验,但我不知道如何调试这个问题。
我有一个最多50个线程的线程池,我有一个500的执行队列,并且循环一个提交作业到该线程池,以一种方式,当一个作业完成后,它回到队列再次被执行。我有一个循环1000个作业要执行,所以队列总是完全填满。
我用它来实例化线程池。
new ThreadPoolExecutor(50,
50,
0L,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(500),
Executors.defaultThreadFactory())
问题是执行中总是有大约30个线程,而不是我期望的50个。
为什么?
韩国社交协会