相关疑难解决方法(0)

为什么我们调用Thread.start()方法反过来调用run方法?

为什么我们调用线程对象的start()方法又轮流调用run()方法,为什么不直接调用run()方法呢?

java multithreading

40
推荐指数
5
解决办法
7万
查看次数

为什么在java中的线程对象上调用start()时不会立即调用run()

或者是吗?
我有一个线程对象来自:

Thread myThread = new Thread(pObject);
Run Code Online (Sandbox Code Playgroud)

其中pObject是实现Runnable接口的类的对象,然后我在线程对象上调用start方法,如下所示:

myThread.start();
Run Code Online (Sandbox Code Playgroud)

现在,我的理解是,当调用start()时,JVM隐式(并立即)调用run()方法,该方法可能被覆盖(就像我的情况一样)

但是,在我的情况下,似乎没有立即调用start()方法(根据需要),但直到从调用块完成其他语句/方法,即如果我在start()调用之后有一个方法,如下所示:

myThread.start();
doSomethingElse();
Run Code Online (Sandbox Code Playgroud)

doSomthingElse()在run()方法运行之前执行.
也许我错误的初始前提是run()总是在调用start()之后调用.请帮忙!再次想要的是在start()之后立即执行run().谢谢.

java multithreading runnable

7
推荐指数
4
解决办法
6850
查看次数

标签 统计

java ×2

multithreading ×2

runnable ×1