Java 并发 – Yield() 方法
javaobject oriented programmingprogramming更新于 2025/7/6 19:56:17
Yield 函数
该函数尝试确保更重要的线程首先运行,而不是执行时间过长且不太重要的线程。
当线程调用 java.lang.Thread.yield 方法时,这是线程调度程序暂停执行的指示。线程调度程序选择接受或忽略此指示。
如果线程执行 ‘yield’ 函数,调度程序将检查是否存在具有相同或更高优先级的线程。如果存在,则当前线程将移至可运行或就绪状态,并为该线程提供处理器资源。
Yield 函数的语法 −
public static native void Yield()
让我们看一个例子 −
示例
import java.lang.*;
class Demo extends Thread{
public void run(){
for (int i=0; i<3 ; i++)
System.out.println("In control of " + Thread.currentThread().getName() + " thread");
}
}
public class Demo_one{
public static void main(String[]args){
Demo my_obj = new Demo();
my_obj.start();
for (int i=0; i<3; i++){
Thread.yield();
System.out.println("In control of " + Thread.currentThread().getName() + " thread");
}
}
}
输出
In control of main thread In control of main thread In control of main thread In control of Thread-0 thread In control of Thread-0 thread In control of Thread-0 thread
名为 Demo 的类扩展了 Thread 类。这里定义了一个 ‘run’ 函数,该函数迭代一组元素并使用 ‘getName’ 函数获取线程的名称。名为 ‘Demo_one’ 的类定义了主函数,在该函数中创建新实例并使用 ‘start’ 函数开始该实例。这里同样迭代元素并在线程上调用 Yield 函数。
一旦线程使用 Yield 方法完成执行,就会有许多线程争用处理器资源。无法指定哪个线程先执行。
一旦线程执行了yield方法,它就会从Running状态转到Runnable状态。
只有平台支持抢占式调度时才能使用yield方法。
当线程在执行过程中暂停时,无法确保它很快或稍后会得到机会,这完全取决于调度算法和线程调度程序。
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

