教育路上
摘要:java线程让步,线程让步可以通过 yield( )方法来实现,该方法和 sleep()方法有点相似,java 线程 让步。以下是我们为大家整理的,相信大家阅读完后肯定有了自己的选择吧。
2022-05-19 13:43网络推荐
在校园中,我们经常会看到同学互相抢篮球,当某个同学抢到篮球后就可以拍一会,之
后他会把篮球让出来,大家重新开始抢篮球,这个过程就相当于 Java 程序中的线程让步。
线程让步可以通过 yield( )方法来实现,该方法和 sleep()方法有点相似,都可以让当前正在运
行的线程暂停,区别在于 yield( )方法不会阻塞该线程,它只是将线程转换成就绪状态,让系
统的调度器重新调度一次。当某个线程调用 yield()方法之后,只有与当前线程优先级相同或
者更高的线程才能获得执行的机会。接下来通过一个案例来演示一下 yield( )方法的使用,如
例 14-9 所示。
例 14-9 Example09.java
// 定义 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.print("线程让步:");
Thread.yield(); // 线程运行到此,作出让步
}
}
}
}
public class Example09 {
public static void main(String[] args) {
// 创建两个线程
Thread t1 = new YieldThread("线程 A");
Thread t2 = new YieldThread("线程 B");
// 开启两个线程
t1.start();
t2.start();
}
}
运行结果如图 14-13 所示:
例 14-9 中创建了两个线程 t1 和 t2,它们优先级相同。两个线程在循环变量 i=3,
都会调用 Thread 的 yield()方法,使当前线程暂停,这时另一个线程就会获得执行,从运行结
果可以看出当线程 B 输出 3 以后,会做出让步,线程 A 继续执行,同样,线程 A 输出 3 后,
也会做出让步,线程 B 继续执行。
访客的评论 2024/04/20 08:00
文中描述的是准确的吗,如何报名!