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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaote0225 中级黑马   /  2015-9-25 23:36  /  633 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当一个线程start()后,线程会立即被执行.对吗???

14 个回复

倒序浏览
启动线程肯定要用start()方法。当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。当cpu分配给它时间时,才开始执行run()方法(如果有的话)。START()是方法,它调用RUN()方法.而RUN()方法是你必须重写的. run()方法中包含的是线程的主体。

点评

大神讲得好!  发表于 2015-9-26 18:39
学习了,赞!  发表于 2015-9-26 07:31
回复 使用道具 举报
首先,你先得了解计算机是怎么工作的。计算机同一时刻只可以运行一个指令。所有指令必须排队等待获取执行权。CPU就像公园看门的老大爷,执行start()相当于持有门票,这时你只是获取了资格。但是一般在人多的时候,需要排队,所以你买到了票也不能立刻进去。
回复 使用道具 举报
你在哪里搞得面试题
回复 使用道具 举报
当然不会了,要等待操作系统的调度
回复 使用道具 举报
来看一下,学习
回复 使用道具 举报
分到CPU的资源片后就开始执行了。一张图搞定:

回复 使用道具 举报
过来学习学习
回复 使用道具 举报
要看CPU是否能切入到该线程去执行,有可能是运行状态,也有可能是阻塞状态。请看图
回复 使用道具 举报
Jared 中级黑马 2015-9-26 11:57:39
10#
下面的配图很赞啊
回复 使用道具 举报
江江会回来的 发表于 2015-9-26 02:04
启动线程肯定要用start()方法。当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机 ...

学习了。。。
回复 使用道具 举报
7楼图片很赞,就是这个道理
回复 使用道具 举报
不一定,他是否立即执行,要看系统怎么安排,不同的系统结果是不一样的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马