首页常见问题正文

Thread类中的yield方法有什么作用?

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

IT培训班

  在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资源。

分享到:
在线咨询 我要报名
和我们在线交谈!