本帖最后由 黑马肖凯骏 于 2012-3-17 14:29 编辑
在启用多线程时,为什么必须通过start()方法来调用run()方法呢?
感谢大家的热心解答,我刚仔细查看了一下start()的方法体
start
public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。
多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。
抛出:
IllegalThreadStateException - 如果线程已经启动。
在一个类中的start()方法调用时可能会抛出IllegalThreadStateException
重复调用会抛出该异常,此处真正调用的是start()方法中的start0(),此方法在声明处使用native关键字,则需要调用本机的操作系统函数,
因为多线程的实现是要依靠底层的操作系统支持的。
所以就不难理解为什么要使用start()了,实际上还是跟CPU调用有关系! |