0

オブジェクト メソッドが実行されるスレッドは、それが作成されたスレッドのスレッドに依存しますか?

Java アプリケーション Thread1 と Thread2 に 2 つのスレッドがあり、ClassA と ClassB の 2 つのクラスがあるとします。

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 が指摘したように、別の 3 番目のスレッドでもかまいません)。これは、どのスレッドがどのオブジェクトを作成したかに完全に依存しません。重要なのは、特定のオブジェクトが特定のスレッドに発行される (つまり、利用可能になる)かどうかだけです。そうであれば、そのスレッドで実行できます。

于 2012-04-20T09:28:04.600 に答える