他のスレッドのようにメイン スレッドの run メソッドを変更して、run メソッドをオーバーライドし、目的の動作を定義できるかどうか知りたいです。
また、メイン メソッドで記述したコードが実際にメイン スレッドの run メソッドに追加されるかどうかもわかります。これは、メイン スレッドの実行時に実行されるものです。
他のスレッドのようにメイン スレッドの run メソッドを変更して、run メソッドをオーバーライドし、目的の動作を定義できるかどうか知りたいです。
また、メイン メソッドで記述したコードが実際にメイン スレッドの run メソッドに追加されるかどうかもわかります。これは、メイン スレッドの実行時に実行されるものです。
いいえ、main()
メソッドの実行に使用されるスレッドをオーバーライドすることはできません。このスレッドはJVMマジックによって発生し、そのrun()
メソッドが呼び出されることはありません(より正確には、そのstart()
メソッドが呼び出されることはありません。ソースでその効果に関するメモを確認できます)。これは、通常のスレッドモデルを維持するために存在するだけです(つまり、すべてのスレッドが呼び出しThread.currentThread()
て何かを取り戻すことができます)。
通常、main メソッドは、アプリケーションの存続期間中は使用されません。それを使用して他のスレッドを初期化して実行し、終了させます。
class Main {
public static void main(String[] args) {
new firstThreadImplementation().start();
// new secondThreadImplementation().start();
new initGuiThread().start();
// we are finished here and don't need this thread anymore
}
}
run()
したがって、開始されたスレッドのメソッドを直接制御できます。