或者是吗?
我有一个线程对象来自:
Thread myThread = new Thread(pObject);
其中 pObject 是实现 Runnable 接口(interface)的类的对象,然后我在线程对象上调用了 start 方法,如下所示:
myThread.start();
现在,我的理解是,当调用 start() 时,JVM 隐式(并立即)调用可能被覆盖的 run() 方法(就像我的情况一样)
但是,在我的例子中,似乎没有立即调用 start() 方法(根据需要),而是直到其他语句/方法从调用 block 完成,即如果我在 start() 调用之后有一个方法像这样:
myThread.start();
doSomethingElse();
doSomthingElse() 在 run() 方法运行之前执行。
也许我对 run() 总是在调用 start() 之后立即调用的初始前提有误。请帮忙!再次需要的是在 start() 之后立即执行 run()。谢谢。
最佳答案
嗯...run()
方法将在不同的线程 中运行。根据定义,这意味着您不能对当前线程中将执行的语句之前或之后做出任何假设,除非您显式同步它们。
关于java - 为什么在java中的线程对象上调用start()时没有立即调用run(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2690207/