更新时间: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资源。