A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 樊其杰 中级黑马   /  2013-4-2 15:33  /  2291 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 樊其杰 于 2013-4-5 11:12 编辑

线程运行时调用sleep()方法,此时线程进入到冻结状态,那么在从运行状态切换到冻结状态时有没有临时阻塞状态?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

7 个回复

倒序浏览
从运行状态切换到冻结状态不会出现临时阻塞状态,只有解除冻结状态以后可能会进入到临时阻塞状态或者直接进入到运行状态。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
sleep方法能够确定睡眠了某个时间后醒来进入可运行状态,从运行状态切换到睡眠时、不会有临时阻塞状态,只是在那段时间里cpu不去运行他了

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
运行状态要么到冻结状态,要么到临时阻塞状态.不会从运行状态到临时阻塞状态然后到冻结状态.
你可以去看一下线程的运行状态图,就一目了然了,它那有各种状态的转换.

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
调用sleep()方法并不会让线程释放它所持有的同步锁,他是使线程进入临时阻塞状态,当时间过后就回进入运行状态;而且在临时阻塞这期间它也不会阻碍其它线程的运行。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
这种情况根本不会出现,因为他只有从冻结状态被唤醒之后,才有可能进入阻塞状态,根本不会说是sleep()之后在notify()之前进入阻塞状态,

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
若还有问题,继续追问; 没有的话,将帖子分类改成【已解决】哦~
回复 使用道具 举报

当调用sleep()线程就会进入冻结状态,这种情况是不会有临时阻塞状态的,当冻结解除后就会等待获得执行权,这是才有临时阻塞状态。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马