What is the usage of yield in Java?
In Java, yield is a static method that belongs to the Thread class, used to indicate to the thread scheduler that the current thread is willing to give up the current CPU resources without causing the thread to enter a blocked state. Calling the yield() method will transition the current thread from a running state to a ready state, allowing the system’s thread scheduler to select a different thread to execute.
In multi-threaded programming, using the yield method can help threads execute more orderly, thus improving program efficiency. However, since the yield method does not guarantee that the current thread will definitely give up CPU resources, it is not advisable to overly rely on yield to control the order of thread execution.
Here is a simple example code demonstrating how to use the yield method:
public class YieldExample implements Runnable {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " is running");
Thread.yield();
}
}
public static void main(String[] args) {
YieldExample example = new YieldExample();
Thread thread1 = new Thread(example, "Thread 1");
Thread thread2 = new Thread(example, "Thread 2");
thread1.start();
thread2.start();
}
}
In the example above, we created two threads and called the Thread.yield() method during the running process of each thread. Running the program, we can see the two threads executing alternately, but it cannot be guaranteed that they will always alternate because the yield method is just a hint, and the specific thread scheduling is determined by the system’s thread scheduler.