黑马程序员技术交流社区

标题: thread的 yield() 方法问题? [打印本页]

作者: 崔朋朋    时间: 2012-9-7 18:32
标题: thread的 yield() 方法问题?
1.线程a执行完a.yield()方法后,a线程就转为  阻塞状态?  还是  就绪状态?    .如果转为 就绪状态 ,那么 线程a 是不是还有可能继续获得cpu来执行?
2.能否依靠yield()方法来让其他线程获得运行机会?常用的让其他线程运行机会的方法都是什么?
作者: 杨千里    时间: 2012-9-7 18:56
你自己去查看文档吧
作者: 杨习平    时间: 2012-9-7 19:03
(1)线程的随机性原理
                CPU的特点:在同一时刻,只能有一个线程执行。
                所以,多个线程其实是在抢占CPU的资源。而CPU呢,却是在这些线程中做着高速的切换。
        (2)线程的生命周期和在生命周期中各个状态的特点
                新建:当一个线程对象被创建,但是没有开启,这个时候,只是对象线程对象开辟了
                      内存空间和初始化数据。
                就绪:新建的对象调用start方法,就到了就绪状态。
                      在这个状态的线程对象,具有执行资格,没有执行权。
                运行:当线程对象获取到了CPU的资源。
                      在这个状态的线程对象,具有执行资格,也具有执行权。
               
                      阻塞:运行过程中的线程由于某些原因(比如wait,sleep),释放了执行权和执行资格。
                            当然,他们可以回到运行状态。只不过,不是直接回到。
                            而是先回到就绪状态。
                死亡:当线程对象调用的run方法结束,或者直接调用stop方法,就让线程对象死亡,
                      在内存中变成了垃圾。
作者: 以沫    时间: 2012-9-8 09:50
yield 我们俗称为让 将执yield的线程放在线程序列的尾部 只能说让当前线程不占用CUP 时间片 但是不能说下一个谁去占用 CUP 还是按照权限级别去分配CUP 时间片的 若一直yield 就永远不会执行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2