A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 630681386@qq.co 中级黑马   /  2014-2-10 22:36  /  1704 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

yield
public static void yield()暂停当前正在执行的线程对象,并执行其他线程
这个方法是用来暂停当前线程的,我想知道的是它是怎么暂停当前线程的,想不明白这个问题,因为看JDK的源代码Thread类中这个方法没有方法体, public static native void yield();这是源代码,谁能给我说一下这个问题,谢谢

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
1  public static native void yield(),在此法处使用了native关键字声明,此关键字是表示调用本机的操作系统函数(比如楼主的windows系统),因为多线程的实现需要依靠底层操作系统的支持。

2 怎么暂停当前线程
  这个其实应属于操作系统知识的范畴了,属于处理机调度,我也      看的一知半解。-0-
希望我的回答,能帮到楼主

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
我后来搞明白了,JDK源码中向这样的方法都是调用系统的底层资源
回复 使用道具 举报
如上所述:多线程的实现需要依靠底层操作系统的支持。

拓展:
状态的改变(例如:线程的由运行状态到yield状态),汇编语言也有专门改变状态的描述方式,汇编语言里面有状态寄存器,里面有中断标志(IF)可以起到中断的作用。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马