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

  • 时间:
  • 浏览:1

那 yield() 法子是干哪此用的呢?来看下源码。

3)yield 非要被中断,而 sleep 则都可不还上能接受中断。

而愿因我们歌词 都都我们歌词 都都把有三个 多系统进程 上加多系统进程 优先级,那输出的结果又不一样。

原文发布时间为:2018-11-20

我们歌词 都都我们歌词 都都知道 start() 法子是启动多系统进程 ,让多系统进程 变成就绪情况汇报等待时间 CPU 调度后执行。

结果2:栈长让出了 CPU 资源,栈长继续运行。

本文作者: 栈长

愿因一定要用它一段话,一段话解释只是 我:

愿因给小蜜加了最高优先权,栈长加了最低优先权,即使栈长先启动,那小蜜还是有很大的概率比栈长先会输出完的,我们歌词 都都我们歌词 都都都可不还上能试一下。

这名 示例每当执行完 20 个后来后来出 CPU,每次谦让后就会马上获取到调度权继续执行。

1)yield, sleep 都能暂停当前多系统进程 ,sleep 都可不还上能指定具体休眠的时间,而 yield 则依赖 CPU 的时间片划分。

yield 法子都可不还上能很好的控制多多系统进程 ,如执行某项复杂化的任务时,愿因担心占用资源太久,都可不还上能在完成某个重要的工作后使用 yield 法子让掉当前 CPU 的调度权,等下次获取到再继续执行,后来 不但能完成当事人的重要工作,不不 给太久多系统进程 太久运行的愿因,出理 有三个 多系统进程 长时间占有 CPU 资源。

2)yield, sleep 有三个 在暂停过程中,如愿因持有锁,则全部后该会释放锁资源。

下面是有三个 使用示例。

/**

 * A hint to the scheduler that the current thread is willing to yield

 * its current use of a processor. The scheduler is free to ignore this

 * hint.

 *

 * <p> Yield is a heuristic attempt to improve relative progression

 * between threads that would otherwise over-utilise a CPU. Its use

 * should be combined with detailed profiling and benchmarking to

 * ensure that it actually has the desired effect.

 *

 * <p> It is rarely appropriate to use this method. It may be useful

 * for debugging or testing purposes, where it may help to reproduce

 * bugs due to race conditions. It may also be useful when designing

 * concurrency control constructs such as the ones in the

 * {@link java.util.concurrent.locks} package.

 */

public static native void yield();

结果1:栈长让出了 CPU 资源,小蜜成功上位。

本文来自云栖社区商务合作伙伴“Java技术栈”,了解相关信息都可不还上能关注“Java技术栈”。

运行以上多多系统进程 ,都可不还上能有以下有某种结果。

yield 即 "谦让",也是 Thread 类的法子。它让掉当前多系统进程 CPU 的时间片,使正在运行中的多系统进程 重新变成就绪情况汇报,并重新竞争 CPU 的调度权。它愿因会获取到,全部后该愿因被太久多系统进程 获取到。

栈长没用过 yield,感觉没哪此鸟用。