1.yield()介绍
yield()方法是Thread类提供的方法,它的作用是线程让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行!
2.yield()示例
public class YieldTest {
class MyThreadA extends Thread{
@Override
public void run() {
for (int i = 1; i < 7; i++){
if (i % 3 == 0){
System.out.println(this.getName() + "玩累了,休息一下" );
Thread.yield();
}
System.out.println(this.getName() + "愉快的玩耍" + i );
}
}
}
class MyThreadB extends Thread{
@Override
public void run() {
for (int i = 1; i < 10; i++){
System.out.println(this.getName() + "愉快的玩耍" + i );
}
}
}
public static void main(String []args) throws InterruptedException {
YieldTest test = new YieldTest();
MyThreadA A = test.new MyThreadA();
MyThreadB B = test.new MyThreadB();
A.start();
B.start();
}
}
运行结果:
3. 总结
就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,
让自己或者其它的线程运行,注意是让自己或者其他线程运行,并不是单纯的让给其他线程。
yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行!