1

私の質問は、実際には 2 つの部分で構成されています。最初の質問は、ロードされたクラスからメソッドを呼び出すために java Method クラスを使用する場合に行う必要があります。この「呼び出された」メソッドは別のスレッドで実行されますか? もしそうなら、あなたはそれにアクセスできますか?

次に、invoke を使用して、ロードされたクラスからメソッドを呼び出す場合を考えてみましょう。メソッドが System.exit() を呼び出すとします。セキュリティ マネージャを使用して System.exit() 呼び出しの発生を停止し、親プログラムがセキュリティ マネージャの例外をキャッチした場合、子スレッドは適切にガベージ コレクションされますか?

4

1 に答える 1

1

この「呼び出された」メソッドは別のスレッドで実行されますか?

いいえ、一般的に Java リフレクションはマルチスレッドとは何の関係もありません。

子スレッドは適切にガベージ コレクションされますか?

マルチスレッドが関与していないため、2番目の質問は意味がないと思います。ただし、より一般的には、スレッド間で例外が伝播されることはないため、未処理の例外が原因で子スレッドが終了した場合、親スレッドはそれを魔法のように "キャッチ" することはできません。論理的に考えてみてください。その時点で、親スレッドはまったく関係のないコードに移行し、実行中のものとは関係のないスタックトレースで親スレッドを中断しても意味がありません。

于 2013-05-13T20:33:30.490 に答える