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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑世光 中级黑马   /  2012-10-9 09:35  /  1987 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑世光 于 2012-10-9 12:10 编辑

一个线程Test调用方法Test.start() 后进入的是运行状态吗?是否就立即获得了cpu执行权

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1 有疑惑多去想 鼓励一下加分

查看全部评分

5 个回复

倒序浏览
获得了程序里的执行权,CPU里还是处于正常排队执行。

评分

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

查看全部评分

回复 使用道具 举报
start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
确实立即获得了执行权,但是否运行要CPU随机处理,所以并不是立即就执行的。

评分

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

查看全部评分

回复 使用道具 举报
Test.start() 这做了两件事,1,启动这条线程;2,调用run方法.
但同一时间内,仅有一条线程执行,也就是说同一时间内只有一条线程有执行权,而其它线程就只有执行资格.
所以它要么获得了cpu执行资格和CPU执行权,要么获得了执行资格但没有执行权.

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 赞一个! 大名很响亮

查看全部评分

回复 使用道具 举报
使用start()方法说明已经开启了Test这个线程,获取了执行资格;但cpu要给所有的线程分配执行权,所以Test线程在等待cpu给它分配执行权。
也就是说,现在已经准备好了去执行,就等cpu给他执行的机会了!
线程的生命周期为:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、死亡(Dead) 5种状态。
Test.start()这时处于就绪状态!

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