java计算空闲时段_空闲线程是否在Java Executors中占用CPU执行时间?

当我在应用程序中有这个代码时:

Executors.newFixedThreadPool(4);

但我从不使用这个线程池.空闲线程会消耗CPU时间吗?如果是这样 – 为什么?

解决方法:

Creates a thread pool that reuses a fixed number of threads operating off a shared unbounded queue. At any point, at most nThreads threads will be active processing tasks.

这可能会导致假设:我们并不完全确切.但正如另一个答案清楚地发现 – 我们可以知道,实施实际上是完全懒惰的.从而:

ExecutorService service = Executors.newFixedThreadPool(4);

甚至没有引起很多设置.实施可以自由等待任何

service.submit(...

即将发生.

另一方面,可以(理论上)立即创建该线程池,并且还可以创建4个OS线程.如果是后一种情况,那么所有这些线程都将处于空闲状态,因此它们不应占用任何CPU资源.

但是,当然,正如Elliott正确地指出的那样,创建池和(可能)创建1到4个线程的初始步骤需要CPU活动.

当然:线程是OS资源.即使他们“只存在”而什么也不做;他们有“成本”.同样,它可能依赖于OS,如果它可能变成一个问题(比如达到一些“现有线程的最大数量”限制).

所以:“当前”的实现是“完全”的懒惰;如果你真的只调用newFixedThreadPool()而不使用生成的ExecutorService ……没有任何反应(就创建的新线程而言).

标签:java,multithreading,threadpoolexecutor,cpu-time

来源: https://codeday.me/bug/20190527/1164133.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值