采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
假设有五个线程等待CPU的调度,五个线程需要去争夺一把互斥锁,假设被线程1拿到了,则线程2、3、4、5都处于Blocked状态,但是由于线程1运行比较耗时,在一个时间片中没有运行完,线程1应该就会失去cpu的调度,进入阻塞状态,此时线程1会释放锁吗?如果不释放锁,当cpu重新调度时,是否只能执行线程1?即只有当线程1运行完毕且释放锁之后其他线程才可能拿到锁,得到cpu的执行权。拿到锁的那个线程会独得cpu恩宠,直到运行完毕,不管她占用了多少的时间片。
失去cpu的调度,进入阻塞状态,此时线程1不会释放锁,当线程1运行完毕且释放锁之后其他线程才可能拿到锁,得到cpu的执行权。阻塞时,不会浪费CPU。
失去cpu调度,线程状态应该是Runnable状态才对?(因为我看线程状态流程图,并没有因为失去cpu的调度而进入阻塞(包括blocked,waitting,timed_waitting)状态的流程)
失去cpu的调度是背后的动作,隐含在进入阻塞状态的动作里,比如执行wait方法,就会导致失去cpu的调度
登录后可查看更多问答,登录/注册
JUC全方位讲解,构建并发工具类知识体系
981 11
1.4k 10
1.0k 10
992 10
1.4k 9