Java中的多线程关于start()

时间:2012-02-29 09:21:22

标签: java

当我们调用线程对象的start()方法时,该方法会自动调用run方法。这种机制有效吗?

3 个答案:

答案 0 :(得分:3)

您的问题不是很明确,但start()会:

  • 启动一个新线程,无论是模拟线程还是“真正的”OS线程(后者更有可能是这些天)
  • 拨打新帖子run()

您可以通过继承run()来指定Thread方法 的工作,或者(最好)将Runnable()传递给Thread构造函数。

答案 1 :(得分:2)

start()是一种非阻塞操作,这意味着它会立即返回。当你调用它时,它将启动一个新线程(可能使用一些操作系统本机API)。这个新主题将调用run()。到那时,调用start()的线程继续运行。

答案 2 :(得分:0)

调用start会将线程的状态更改为Runnable,这并不意味着将立即调用run方法中的代码。它只转换到一个状态,其中线程可以由调度程序运行,这可能在调用它时发生,或者在未来的未定义点发生(由调度程序决定)。 p>

是否进行了run方法调用是无关紧要的(文档说它被调用),但无论如何,run内的第一行代码不能保证立即运行,如果这是你的问题

start视为对调度程序的请求,说“请尽可能运行此任务”。