我正在从事一些并发编程工作,有一个部分让我困扰。
假设我有一些课 Foo
它扩展了 Thread 并实现了它自己的公共(public)方法 bar()
以及所需的run()
方法。如果我实现多个 Foo
对象,每个对象都包含对另一个对象的引用 Foo
对象,并在 run()
内Foo
的方法类是对 bar()
的调用任何方法Foo
它所引用的对象。如果Foo
名为“Thread-1
”的对象调用bar()
关于Foo
名为“Thread-2
”的对象,那么谁真正在执行“Thread-2
”中的方法代码呢?
执行是否从“Thread-1
”切换到“Thread-2
”来执行,还是“Thread-1
”继续执行“Thread-2
”中的代码?如果是第二个选择,我怎样才能让它像第一个选择一样?
最佳答案
仅当您调用thread.start()
(或使用executor.submit(runnable)
)时才会启动新线程。所有其他方法调用都保留在当前线程中。
关于java - 在Java中,如果我调用一个从另一个可运行对象扩展Thread的类,哪个Thread会执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10235253/