线程中的yield()
属于本地方法,放弃当前的CPU资源,回到runnable状态。
/*** 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();
Java线程中的Thread.yield( )方法,译为线程让步。顾名思义,就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,
让自己或者其它的线程运行,注意是让自己或者其他线程运行,并不是单纯的让给其他线程。
yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保
证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行!
举个例子:一帮朋友在排队上公交车,轮到Yield的时候,他突然说:我不想先上去了,咱们大家来竞赛上公交车。然后所有人就一块冲向公交车,
有可能是其他人先上车了,也有可能是Yield先上车了。
但是线程是有优先级的,优先级越高的人,就一定能第一个上车吗?这是不一定的,优先级高的人仅仅只是第一个上车的概率大了一点而已,
最终第一个上车的,也有可能是优先级最低的人。并且所谓的优先级执行,是在大量执行次数中才能体现出来的。
转载于:https://www.cnblogs.com/DDiamondd/p/11290942.html
线程中的yield()相关推荐
- 【并发编程】线程中的Sleep、Yield、Join等api方法方法线程状态转换
在上两篇中我们学习线程的概念和如何创建线程,在本篇中我们学习一些线程的方法和线程的状态. 方法 Sleep:线程睡眠 线程休眠指的是让线程暂缓执行以一下,等到了预计时间之后再恢复执行参数是毫秒.当线程 ...
- java线程 yield_Java线程中yield与join方法的区别
长期以来,多线程问题颇为受到面试官的青睐.虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用.之前,我讨论了一个w ...
- Java线程中sleep()、wait()和notify()、suspend()和resume()、yield()、join()、interupt()的用法和区别
从操作系统的角度讲,os会维护一个ready queue(就绪的线程对列).并在某一时刻CPU只为ready queue中位于队列头部的线程服务.但是当前正在被服务的线程可能觉得cpu的服务质量不够好 ...
- 了解多线程中的yield
2019独角兽企业重金招聘Python工程师标准>>> 最近在学习多线程这一块,发现里面有好多让人产生误区的地方,今天我来分析下java多线程中的yield功能,希望其他朋友也可以从 ...
- C++中的yield和fork
各位看官,您没有看错,C++是可以有yield和fork的,这个主题小麦很早以前就打算写,只是一直没有一个契机给我这个动力.前段日子,小麦帮朋友处理一个用单线程模拟多线程的活儿的时候,再次想到了这个事 ...
- java 线程 状态 图_Java线程中的生命周期和状态控制图文详解
这篇文章主要介绍了Java线程的生命周期和状态控制,需要的朋友可以参考下 一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于 ...
- java线程中的常用方法_[多线程] 线程中的常用方法-最详细
线程中常用的方法 1.public void start() 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 2.public void run() 如果该线程是使用独立的 Runna ...
- 可惜Java中没有yield return
项目中一个消息推送需求,推送的用户数几百万,用户清单很简单就是一个txt文件,是由hadoop计算出来的.格式大概如下: uid caller 123456 12345678901 789101 12 ...
- 线程中这么调用类_这些线程知识总结是真的到位!java开发两年的我看的目瞪口呆
前言 什么是线程:程序中负责执行的那个东东就叫做线程(执行路线,进程内部的执行序列),或着说是进程的子任务. Java中实现多线程有几种方法 继承Thread类: 实现Runnable接口: 实现Ca ...
最新文章
- Go 语言编程 — panic 和 recover
- jQuery 在Table中选择input之类的东西注意事项
- css学习笔记2--多重边框
- 爱之箭发射(las)
- 你的项目应该如何正确分层?
- mysql5.7.25源码安装_源码编译安装 mysql5.7.25
- 关于css的text-indent首行缩进两个字符和图片缩进的问题
- IWMS实现频道页面的方法
- 1.4- 定时任务总结之九句箴言
- 4大要点搞定企业私有云建设
- 喜庆红色主题年货节电商首页模板|电商活动中的压轴节目
- pip更新出问题后再输入报No module named ‘pip‘错怎么处理
- Android中activity的生命周期
- 世界语言共有4种书写方向
- 电脑无法正常开机,黑屏,只显示鼠标。
- 三菱 J2 J2S J3 J4 编码器 电机文件 修改ID 修改功率 修改型号
- Codeforces1336A Linova and Kingdom (思维)
- java groovy_java 和groovy的混合使用
- 福大软工1816 · 第四次作业 - 团队展示
- 实验4-1-4 求整数的位数及各位数字之和 (15分)(想象成剥洋葱)
热门文章
- tomcat配置文件修改
- 模态框在IE下的问题,即position:fixed在IE下不兼容的处理方式
- [Win32]一个调试器的实现(六)显示源代码
- 云计算入门学习资料,linux云计算学习大纲
- HTML-参考手册: HTML 颜色名
- Javascript、Jquery获取浏览器和屏幕各种高度宽度[mark]
- 【CSS3】CSS中的定位
- Longest Substring Without Repeating Characters(最长不重复子序列求解)
- [HDOJ2845]Beans(dp)
- linux-``反引号