- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
javadoc说:
When a new task is submitted [...], and fewer than corePoolSize threads are running, a new thread is created to handle the request, even if other worker threads are idle. If there are more than corePoolSize but less than maximumPoolSize threads running, a new thread will be created only if the queue is full. By setting corePoolSize and maximumPoolSize the same, you create a fixed-size thread pool. By setting maximumPoolSize to an essentially unbounded value such as Integer.MAX_VALUE, you allow the pool to accommodate an arbitrary number of concurrent tasks.
这是否意味着固定大小线程池中同时运行的线程数将始终小于corePoolSize
,除非队列已满?
最佳答案
Does it mean that the count of simultaneously running thread in a fixed-size thread pool will be always less than corePoolSize unless the queue is full?
不,事实并非如此。
正如我所读到的,对于固定大小的池,这句话没有说明任何关于 Activity 线程数量的信息,特别是与队列大小相关的信息。将两者联系在一起的唯一一句话是:
If there are more than corePoolSize but less than maximumPoolSize threads running, a new thread will be created only if the queue is full.
这并不适用,因为在固定大小的池中,corePoolSize
等于 maximumPoolSize
。 “if”条件永远不会满足。
它确实说明的是:
When a new task is submitted [...], and fewer than corePoolSize threads are running, a new thread is created to handle the request, even if other worker threads are idle.
只要未达到 corePoolSize
限制,就会创建线程。只要未达到此限制,线程就不会被重用(但它们可能因未捕获的异常或通过池的超时功能而死亡)。如果我们创建足够快或有足够长的队列,这显然为创建 corePoolSize
线程留下了空间。
这些知识让我们可以想象这样的场景:创建一个大小为 2 的固定池,其中有一个大小为 5 的等待队列,然后向池中提交两个长时间运行的任务。 (“长时间运行”意味着每个任务的执行时间比主线程提交它们以及线程池确认它们的存在并处理它们所需的时间大一个数量级)。可能的时间表如下:
corePoolSize
尚未达到,会创建一个新线程来执行 T1。corePoolSize
此时,线程池有一个空队列,并且正在运行的线程计数恰好为 corePoolSize
,而不是“低于 corePoolSize
”,QED。
有点相反,这意味着,获得大于 corePoolSize 的线程数的唯一方法是同时满足所有条件:
corePoolSize
,并且maximumPoolSize
大于 corePoolSize
,并且 关于java - 除非队列已满,否则固定大小线程池中同时运行的线程数是否总是小于 corePoolSize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35602773/
我编写了一个函数来包含两个 DateTime 之间的小时列表。 但最后它看起来并不是很容易阅读,这让我想对它进行单元测试,即使我正在从事的项目根本没有进行单元测试。 所以我的问题是,是否有一种更易读或
我一定是漏掉了什么,因为我还没有在网上找到这个非常基本的问题的答案。我正在使用能够容纳三个 int 的缓冲 channel 值。 然后我使用三个 goroutine 来填充它,一旦缓冲 channel
我发现如果一个矩阵(几乎)满了,那么将它存储在稀疏中会导致(更多)更多的计算时间。 虽然以稀疏形式存储完整矩阵是微不足道的,但我只想知道这一事实背后的原因。 我的推测是稀疏索引读取将是计算时间的主要贡
root@root:~# sudo du -ch --max-depth=1 --exclude=/home/ / du: cannot access ‘/sys/kernel/slab/L2TP/I
基本上我想创建一个 UIProgressView 在 3 秒内从 0.0(空)到 1.0(满)。有人能指出我在 swift 中使用 NSTimer 与 UIProgressView 的正确方向吗? 最
我是一名优秀的程序员,十分优秀!