小编Saa*_*aad的帖子

ThreadPoolExecutor 的排队行为是否可自定义,以优先创建新线程而不是排队?

ThreadPoolExecutor文档说

如果 corePoolSize 或更多线程正在运行,Executor 总是更喜欢对请求进行排队而不是添加新线程。


如果运行的线程数大于 corePoolSize 但小于 maxPoolSize,则仅当队列已满时才会创建新线程。

有没有办法让执行器更喜欢创建新线程,直到达到最大值,即使有超过核心大小的线程,然后开始排队?如果队列达到最大大小,任务将被拒绝。如果在处理繁忙突发后,超时设置能够启动并删除线程至核心大小,那就太好了。我明白了为什么更喜欢排队以便进行限制;然而,这种定制还允许队列主要充当尚未运行的任务列表。

java java.util.concurrent threadpoolexecutor

6
推荐指数
1
解决办法
870
查看次数

AtomicInteger的get()vs intValue()

为什么AtomicInteger同时具有int get()和int intValue()?我看到它还有来自Number的float floatValue().是否有一个与维持AtomicInteger参数的原子性相关的含义,或者是否可以互换?

java atomicity

6
推荐指数
2
解决办法
1298
查看次数

为什么我不能用BlockingQueue <Callable>实例化ThreadPoolExecutor; 为什么只有BlockingQueue <Runnable>?

我的理解是在1.5中添加了callable,并且runnable接口保持原样以防止世界结束.为什么我不能实例化- 为什么队列必须只运行runnable?在内部,如果我要提交,invokeAll,invokeAny callables,这应该没问题吧?还会返回一个callables列表吗?ThreadPoolExecutor(core, max, tu, unit, new BlockingQueue<Callable>())shutDownNow()

java jdk1.5 threadpoolexecutor

3
推荐指数
1
解决办法
2941
查看次数