美文网首页
多线程 Thread.yield 方法到底有什么用?

多线程 Thread.yield 方法到底有什么用?

作者: Drew_MyINTYRE | 来源:发表于2022-04-18 21:23 被阅读0次

    Thread.yield() 方法是干什么用的呢?

    yield 即 "谦让",也是 Thread 类的方法。它让出当前线程 CPU 的时间片,使正在运行中的线程重新变成就绪状态,并重新竞争 CPU 的调度权。它可能会获取到,也有可能被其他线程获取到。

    public static native void yield();
    

    yield()sleep() 的异同:

    1)yield(), sleep() 都能暂停当前线程,sleep() 可以指定具体休眠的时间,而 yield() 则依赖 CPU 的时间片划分。

    2)yield(), sleep() 两个在暂停过程中,如已经持有锁,则都不会释放锁资源。

    3)yield() 不能被中断,而 sleep() 则可以接受中断。

    yield() 方法可以很好的控制多线程,如执行某项复杂的任务时,如果担心占用资源过多,可以在完成某个重要的工作后使用 yield() 方法让掉当前 CPU 的调度权,等下次获取到再继续执行,这样不但能完成自己的重要工作,也能给其他线程一些运行的机会,避免一个线程长时间占有 CPU 资源。

    相关文章

      网友评论

          本文标题:多线程 Thread.yield 方法到底有什么用?

          本文链接:https://www.haomeiwen.com/subject/uuxjertx.html