Java 多线程:执行对象方法的线程是否取决于在其中创建对象的线程上的线程



执行对象方法的线程是否取决于在其中创建对象的线程上的线程?

假设您的 Java 应用程序中有两个线程 Thread1 和 Thread2,以及两个类 Aa 和 B类。

您在 Thread1 上创建一个 ObjectOfClassA,

然后在 Thread2 上创建 ObjectOfClassB,ObjectOfClassB 包含对 ObjectOfClassA 的引用。当 ObjectOfClassB 运行 ObjectOfClassA 的方法时,该方法将在哪个线程上执行?

在您的回答中,请提供相关文档的链接。

根据我所看到的,我感觉到对象方法的执行与创建它的线程完全正交,但我不确定。

没有自动线程切换这样的事情,因此无论对象是在哪个线程上创建的,每个方法调用都发生在"当前线程"上。

您在 Thread1 上创建一个 ObjectOfClassA,

然后在 Thread2 上创建 ObjectOfClassB,ObjectOfClassB 包含对 ObjectOfClassA 的引用。当 ObjectOfClassB 运行 ObjectOfClassA 的方法时,该方法将在哪个线程上执行?

在运行 ObjectOfClassB 本身的调用者方法的同一线程上(我猜这将是 Thread2......但正如@Andrzej所指出的,它也可以是另一个第三条线)。这完全独立于哪个线程创建了哪个对象。重要的是给定对象是否发布(即可用)到给定线程。如果是,它可以由该线程运行。

最新更新