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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔朋朋 中级黑马   /  2012-9-7 18:32  /  1597 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.线程a执行完a.yield()方法后,a线程就转为  阻塞状态?  还是  就绪状态?    .如果转为 就绪状态 ,那么 线程a 是不是还有可能继续获得cpu来执行?
2.能否依靠yield()方法来让其他线程获得运行机会?常用的让其他线程运行机会的方法都是什么?

3 个回复

倒序浏览
你自己去查看文档吧
回复 使用道具 举报
(1)线程的随机性原理
                CPU的特点:在同一时刻,只能有一个线程执行。
                所以,多个线程其实是在抢占CPU的资源。而CPU呢,却是在这些线程中做着高速的切换。
        (2)线程的生命周期和在生命周期中各个状态的特点
                新建:当一个线程对象被创建,但是没有开启,这个时候,只是对象线程对象开辟了
                      内存空间和初始化数据。
                就绪:新建的对象调用start方法,就到了就绪状态。
                      在这个状态的线程对象,具有执行资格,没有执行权。
                运行:当线程对象获取到了CPU的资源。
                      在这个状态的线程对象,具有执行资格,也具有执行权。
               
                      阻塞:运行过程中的线程由于某些原因(比如wait,sleep),释放了执行权和执行资格。
                            当然,他们可以回到运行状态。只不过,不是直接回到。
                            而是先回到就绪状态。
                死亡:当线程对象调用的run方法结束,或者直接调用stop方法,就让线程对象死亡,
                      在内存中变成了垃圾。
回复 使用道具 举报
yield 我们俗称为让 将执yield的线程放在线程序列的尾部 只能说让当前线程不占用CUP 时间片 但是不能说下一个谁去占用 CUP 还是按照权限级别去分配CUP 时间片的 若一直yield 就永远不会执行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马