- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用固定线程池作为工作线程。以下是我的创建方法:
ThreadPoolExecutor producerThreadPool = (ThreadPoolExecutor) Executors.newFixedThreadPool(25);
所以我将它的大小设置为25,我假设任何时候最多只能有25个 Activity 线程? (如我错了请纠正我)。
然后如果线程池中有空闲线程,我的主线程就会不断尝试一次提交30个工作线程:
if(producerThreadPool.getActiveCount() <= 25)
但是当我调试它时,我得到了这个日志:
Mon Jul 23 14:04:42 EDT 2012: {"queued_count":"0","active_count":"28","scheduled_tasks":"28","core_pool_size":"1000","pool_size":"29"}
Mon Jul 23 14:04:43 EDT 2012: {"queued_count":"0","active_count":"3","scheduled_tasks":"33","core_pool_size":"1000","pool_size":"34"}
Mon Jul 23 14:04:44 EDT 2012: {"queued_count":"0","active_count":"0","scheduled_tasks":"60","core_pool_size":"1000","pool_size":"60"}
Mon Jul 23 14:04:45 EDT 2012: {"queued_count":"0","active_count":"0","scheduled_tasks":"90","core_pool_size":"1000","pool_size":"90"}
...
队列总是空的,core_pool_size仍然是1000,并且pool_size不断增加直到1000,但我假设core_pool_size应该是25并且应该有排队的任务?
我是不是做错了什么或者误解了?
如有任何帮助,我们将不胜感激,谢谢!
这就是我生成日志的方式:
HashMap<String, String> log = new HashMap<String, String>();
log.put("core_pool_size", Integer.toString(producerThreadPool.getCorePoolSize()));
log.put("scheduled_tasks", Long.toString(producerThreadPool.getTaskCount()));
log.put("pool_size", Integer.toString(producerThreadPool.getPoolSize()));
log.put("active_count", Integer.toString(producerThreadPool.getActiveCount()));
log.put("queued_count", Integer.toString(producerThreadPool.getQueue().size()));
String gson_str = gson.toJson(log);
最佳答案
根据文档ThreadPoolExecutor.getActiveCount()它只给出一个大概的计数,考虑到获得准确值所需的开销,这是相当公平的。因此,当您看到“28”时,它实际上可能不是 28 个线程同时运行,而是在函数调用的持续时间内计数为 28 个线程。
关于Java FixThreadPool 无法设置池大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11618161/
我正在使用固定线程池作为工作线程。以下是我的创建方法: ThreadPoolExecutor producerThreadPool = (ThreadPoolExecutor) Executors.n
我正在尝试在 Java 8 中使用固定线程池,只要它保持在同一函数内,它就可以完美工作。一旦我尝试将执行器共享为参数,它就永远不会并行运行。 这很好用: ``` public static void
据我所知,执行器完成服务提供来自 future 对象的输出,无论任务在入站队列中请求的顺序如何,即无论哪个任务首先完成,结果都会放入出站队列中。另一方面,FixedThreadPool也是并行执行任务
我是一名优秀的程序员,十分优秀!