JavaマルチスレッドでisAlive()を使用するコードを以下に示します。 表示されている出力シーケンスを解釈できません。私が期待している出力はr1 r1 true true r2 r2
誰もがこれを手伝ってくれますか?javaマルチスレッドでisAlive()を実行
public class MyThread extends Thread
{
public void run()
{
System.out.println("r1 ");
try {
Thread.sleep(200);
}
catch(InterruptedException ie) { }
System.out.println("r2 ");
}
public static void main(String[] args)
{
MyThread t1=new MyThread();
MyThread t2=new MyThread();
t1.start();
t2.start();
System.out.println(t1.isAlive());
System.out.println(t2.isAlive());
}
}
出力: R1 真 真 R1 R2 R2
いいえ、いけません。あなたは2つのスレッドを開始しており、出力はスケジューリングやその他のものに完全に依存しています。あなたが特定の出力を探しているなら、このコードはそれを与えません。それはあなたがそれを実行する時間の間に変更することができます。 – Kayaman
あなたは、出力があなたが期待するものと思われるのはなぜですか? –
あなたは本当になぜアウトプットがあなたが思っていると思うと思うかを説明していません。 Oracleが提供する同時実行チュートリアル・ドキュメントを見直し、まだ不明な点がある場合は、問題を解決することをお勧めします。 https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html – pvg