0

执行对象方法的线程是否依赖于创建它的线程上的线程?

想象一下,您的 Java 应用程序 Thread1 和 Thread2 中有两个线程以及两个类 ClassA 和 ClassB。

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

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

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

4

2 回答 2

7

没有自动线程切换之类的东西,因此每个方法调用都发生在“当前线程”上,无论对象是在哪个线程上创建的。

于 2012-04-20T09:26:56.817 回答
2

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

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

于 2012-04-20T09:28:04.600 回答