java - 在Java中,如果我调用一个从另一个可运行对象扩展Thread的类,哪个Thread会执行?

标签 java multithreading concurrency thread-safety

我正在从事一些并发编程工作,有一个部分让我困扰。

假设我有一些课 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/

相关文章:

c# - 为什么ConfigureAwait(true)在单元测试中不起作用?

go - 理解代码 : Sharing resources by communicating

java - 设置方法/线程的最大执行时间

java - 关于阻塞同步集合

java - 不了解排序是如何工作的

java - 如何在ThreadFactory中初始化ThreadLocal变量?

java - Mockito 未返回预期值

java - @GuardedBy ("mutex") 是否使数据线程安全或者它只是一个文档

c++ - c++中的线程,不能使用参数

java - 如何让 videoView 在 fragment 内播放?