[解決済み] runメソッドを直接呼び出すとどうなるのでしょうか?
2022-02-15 07:21:48
質問
クラス "TestRunnable"があり、runメソッドをオーバーライドするために、以下の実装をしています。
Runnable
.
オーバーライドされたrunメソッドを実行すると、以下のようになります。
TestRunnable nr = new TestRunnable();
Thread t = new Thread(nr);
t.setName("Fred");
t.start();
-
を直接呼び出したらどうなるのでしょうか?
t.run();
-
を呼び出さない場合はどうなるのでしょうか?
t.start();
?
解決方法は?
その
run
メソッドは単なるメソッドです。 これを直接呼び出すと、別のスレッドではなく、現在のスレッドで実行されます。
以下は私のテストです。
TestRunnable
:
class TestRunnable implements Runnable
{
public void run()
{
System.out.println("TestRunnable in " + Thread.currentThread().getName());
}
}
のみであれば出力します。
start
が呼び出されます。
TestRunnable in Fred
のみであれば出力します。
run
が呼び出されます。
TestRunnable in main
もし
start
が呼ばれないと
Thread
は決して実行されません。 メインスレッドは終了し
Thread
はガベージコレクションされます。
どちらも呼び出されなかった場合の出力。 (何も)
関連
-
[解決済み】java 'jar'が内部コマンドまたは外部コマンドとして認識されない。
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み] java.sql.SQLException を取得しました。ResultSet が終了した後の操作は許可されません。
-
[解決済み】koch snowflake java recursion
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み] Androidで遅延後にメソッドを呼び出す方法
-
[解決済み】非同期プログラミングとマルチスレッドの違いは何ですか?
-
[解決済み】JavaでThreadを正しく停止する方法は?
-
[解決済み】スレッドをタイムアウトさせる方法
-
[解決済み】Java ExecutorService タスクの例外処理について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み】エラー。Selection does not contain a main type
-
[解決済み】宣言されたパッケージが期待されるパッケージと一致しない ""
-
[解決済み】Eclipseがエラーメッセージ "Java was started but returned exit code = 1" を返す
-
[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない
-
[解決済み】 JAVA 変数宣言はここではできない
-
[解決済み】Java Error "Exception in thread "main" java.util.InputMismatchException" Array プログラムで発生。
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
-
[解決済み] エラー - trustAnchors パラメータは空であってはなりません。
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件