开发者社区> 问答> 正文

关于java中线程yield()方法问题

问题一:
我知道yield是用来休眠当前线程,但我查看了资料,又说其不会释放锁,所以我就不解了,其明明会将cpu资源给其他线程,那它不释放锁,其他线程有怎么获取cpu资源呢?还是我理解有误?
问题二:
资料说是相同优先级的线程可以竞争获取资源?那么比它优先级高的有机会吗?

展开
收起
蛮大人123 2016-03-12 15:58:07 2009 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    yield() 方法和释放不释放锁没有关系,楼主对其作用理解有偏差。
    jdk 中的解释为:
    调用该方法的线程通知线程调度器当前线程可以让出CPU,线程调度器可以响应或者忽略此请求。
    要注意的是:
    线程调度器并不一定响应这个请求。
    响应请求时,仅仅将当前线程变为可运行状态。其他处于可运行状态的线程将竞争CPU资源,高优先级线程将会比相同优先级的线程有较高的概率获得CPU资源,但并不保证。
    另外,需要注意的是,CPU资源和锁的获取并没有直接关系,CPU资源是由系统来分配的。

    2019-07-17 19:01:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
多IO线程优化版 立即下载