java 线程里面 start() 方法是如何运行的?

我查看Thread类的源码,发现里面的start方法没有调用run()?哪位大侠能讲一下start方法的运行机制,谢了!native方法的具体实现在哪里可以找到?star... 我查看Thread 类的源码,发现里面的start方法没有调用run()?

哪位大侠能讲一下start方法的运行机制,谢了!
native 方法的具体实现在哪里可以找到? start0()是如何实现的?
展开
 我来答
Jseven_jy
2010-08-07 · TA获得超过8122个赞
知道大有可为答主
回答量:2499
采纳率:100%
帮助的人:1148万
展开全部
使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。

多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。

上面是jdk文档里面

下面是源码

public synchronized void start() {
/**
* This method is not invoked for the main method thread or "system"
* group threads created/set up by the VM. Any new functionality added
* to this method in the future may have to also be added to the VM.
*
* A zero status value corresponds to state "NEW".
*/
if (threadStatus != 0)
throw new IllegalThreadStateException();
group.add(this);
start0();
if (stopBeforeStart) {
stop0(throwableFromStop);
}
}

private native void start0();

发现没有。。他调用了本地方法start0这个方法就是他底层实现的了。。所以我们并看不到他显示的调用run方法。。因为他是在底层调用的。。虚拟机调用的。。

native方法就是本地方法。。是用其他语言写的。。你自己也可以写native方法。。就是JNI编程。。想看到是看不到的哦。。
Google干掉摆渡
推荐于2017-09-18 · TA获得超过580个赞
知道答主
回答量:121
采纳率:0%
帮助的人:153万
展开全部
使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。

多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
武后星痕
推荐于2017-09-15 · 超过16用户采纳过TA的回答
知道答主
回答量:62
采纳率:100%
帮助的人:23.3万
展开全部
使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run
方法)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
442017042
2010-08-05
知道答主
回答量:47
采纳率:0%
帮助的人:27.6万
展开全部
start方法没有调用run() 是这样的

start方法的运行机制:启动一个事务 完成Thread的 run()方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我一如既往地
2010-08-05 · 超过28用户采纳过TA的回答
知道答主
回答量:111
采纳率:0%
帮助的人:60万
展开全部
祝君好运
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式