线程让步可以通过 yield ()方法来实现,该方法和 sleep ()方法有点相似,都可以让当前正在运行的线程暂停,区别在于 yield() 方法不会阻塞该线程,它只是将线程转换成就绪状态,让系统的调度器重新调度一次。当某个线程调用 yield ()方法之后,只有与当前线程优先级相同或者更高的线程才能获得执行的机会。
ExampleM09:
//线程让步
//定义 YieldThread 类继承 Thread 类
class YieldThread extends Thread {
//定义一个有参的构造方法
public YieldThread(String name) {
super(name); //调用父类的构造方法
}
public void run() {
for (int i=0;i<5;i++) {
System.out.println(Thread.currentThread().getName()+"---"+i);
if (i==3){
System.out.println("线程让步:");
Thread.yield(); //线程运行到此,作出让步
}
}
}
}
public class ExampleM09 {
public static void main(String[] args) {
//创建两个线程
Thread t1 = new YieldThread("线程A");
Thread t2 = new YieldThread("线程B");
//开启两个线程
t1.start();
t2.start();
}
}