更新时间:2023-04-19 来源:黑马程序员 浏览量:

在Java中,Thread类中的yield()方法用于将 CPU 资源让给其他线程。当一个线程调用yield()方法时,它会暂停当前正在执行的任务并让出CPU资源,以便其他线程有机会执行。如果没有其他线程需要执行,那么该线程将继续执行。
  下面是一个简单的Java代码演示yield()方法的用法:
public class YieldDemo extends Thread {
    public YieldDemo(String name) {
        super(name);
    }
    public void run() {
        for (int i = 1; i <= 5; i++) {
            System.out.println(Thread.currentThread().getName()
                + " running: " + i);
            // 调用 yield() 方法
            Thread.yield();
        }
    }
    public static void main(String[] args) {
        YieldDemo t1 = new YieldDemo("Thread 1");
        YieldDemo t2 = new YieldDemo("Thread 2");
        // 启动线程
        t1.start();
        t2.start();
    }
}在这个例子中,我们创建了两个 YieldDemo 线程对象并启动它们。每个线程都会运行一个循环,打印出线程名称和循环计数器的值。在每次循环迭代中,线程都会调用 yield() 方法,以便让其他线程有机会运行。
  运行这个程序,输出可能是这样的:
Thread 1 running: 1 Thread 2 running: 1 Thread 1 running: 2 Thread 2 running: 2 Thread 1 running: 3 Thread 2 running: 3 Thread 1 running: 4 Thread 2 running: 4 Thread 1 running: 5 Thread 2 running: 5
注意到,在输出中,两个线程交替运行,每个线程都执行了五次循环,但它们的运行顺序并不是固定的。这是因为我们在每次循环迭代中调用了yield() 方法,让出了CPU资源给其他线程。这样可以增加程序的并发性,使得多个线程可以更公平地使用CPU资源。
1024首播|39岁程序员逆袭记:不被年龄定义,AI浪潮里再迎春天
2025-10-241024程序员节丨10年同行,致敬用代码改变世界的你
2025-10-24【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19