cpu load值是正在运行和就绪等待状态线程数之和。
load越大,说明线程竞争时间片越激烈,线程等待队列越长。
对于8核系统,如果load为10,说明8个线程正在执行,2个线程等待时间片。
cpu利用率
load越大,cpu使用率越高吗?
不一定,如果线程是执行IO这种,线程拿到时间片后并没有完全利用cpu,阻塞的等待IO,虽然占有cpu时间片,但cpu没有进行计算。
1) 新建
当用new关键字创建一个线程时,还没调用start 就是新建状态。
2) 就绪
调用了 start 方法之后,线程就进入了就绪阶段。此时,线程不会立即执行run方法,需要等待获取CPU资源。
3) 运行
当线程获得CPU时间片后,就会进入运行状态,开始执行run方法。
4) 阻塞
当遇到以下几种情况,线程会从运行状态进入到阻塞状态。
调用sleep方法,使线程睡眠。
调用wait方法,使线程进入等待。
当线程去获取同步锁的时候,锁正在被其他线程持有。
调用阻塞式IO方法时会导致线程阻塞。
调用suspend方法,挂起线程,也会造成阻塞。
需要注意的是,阻塞状态只能进入就绪状态,不能直接进入运行状态。因为,从就绪状态到运行状态的切换是不受线程自己控制的,而是由线程调度器所决定。只有当线程获得了CPU时间片之后,才会进入运行状态。
5) 死亡文章来源:https://www.toymoban.com/news/detail-428316.html
当run方法正常执行结束时,或者由于某种原因抛出异常都会使线程进入死亡状态。另外,直接调用stop方法也会停止线程。但是,此方法已经被弃用,不推荐使用。文章来源地址https://www.toymoban.com/news/detail-428316.html
到了这里,关于cpu load与cpu使用率与线程的5种状态的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!