Thread 类中的 yield 方法是用于线程控制的一种机制,它有助于实现线程之间的协作。yield 方法的作用是提示当前线程让出CPU时间片,将执行机会让给其他具有相同或更高优先级的线程,或者与当前线程具有相同优先级的线程。以下是关于yield 方法的详细解释、优缺点以及示例说明:
作用:
yield 方法的主要作用是提醒调度器,当前线程愿意放弃CPU资源,以便其他线程有机会运行。优点:
缺点:
yield 可能会降低程序的整体性能,因为它会导致线程频繁切换,造成一定的开销。示例代码:
下面是一个简单的示例,展示了yield 方法的使用:
public class YieldExample {
public static void main(String[] args) {
Thread thread1 = new Thread(new MyRunnable("Thread 1"));
Thread thread2 = new Thread(new MyRunnable("Thread 2"));
thread1.start();
thread2.start();
}
static class MyRunnable implements Runnable {
private final String name;
public MyRunnable(String name) {
this.name = name;
}
@Override
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println(name + ": " + i);
if (i == 3) {
Thread.yield(); // 在第三次迭代时让出CPU时间片
}
}
}
}
}
在这个示例中,我们创建了两个线程,并在它们的运行过程中使用 Thread.yield() 让出CPU时间片。请注意,yield 方法的调用是提示性的,操作系统和线程调度器可能会根据自身策略来决定是否实际让出CPU。这里,我们在第三次迭代时调用 yield,让出一次CPU时间片。这有助于在两个线程之间实现更平均的竞争。