【发布时间】:2010-04-22 11:10:25
【问题描述】:
是吗?
我有一个线程对象来自:
Thread myThread = new Thread(pObject);
其中 pObject 是实现 Runnable 接口的类的对象,然后我在线程对象上调用 start 方法,如下所示:
myThread.start();
现在,我的理解是,当 start() 被调用时,JVM 会隐式(并立即)调用可能被覆盖的 run() 方法(就像我的情况一样)
但是,在我的情况下,似乎 start() 方法没有立即调用(根据需要),而是直到其他语句/方法从调用块完成,即如果我在 start() 调用之后有一个方法像这样:
myThread.start();
doSomethingElse();
doSomthingElse() 在 run() 方法运行之前被执行。
也许我对 run() 总是在 start() 被调用之后立即调用的初始前提是错误的。请帮忙!再次需要的是在 start() 之后立即执行 run()。谢谢。
【问题讨论】:
-
你可以调用
Thread.yield()为其他线程“释放”CPU,但这并不意味着你的新线程就是下一个。
标签: java multithreading runnable