私のプログラムの分析は実行されますが、そのようには起こっていません::
- main メソッドに Child1 と Child2 という 2 つのスレッドを作成しました。
-その後、両方のスレッドが開始されました
-Child1 は別のスレッドとして run() メソッドに入り、同期ブロックに入り、1 を出力して、wait メソッドが呼び出されたためにスリープします。
-Child2 は別のスレッドとして run() メソッドに入り、同期ブロックに入り、1 を出力して、Child1 がウェイクアップすることを通知します。
-このプロセスは 5 まで続きます
package multi_threading;
public class inter_thread implements Runnable {
static inter_thread obj;
boolean val=false;
Thread t;
public inter_thread(){}
public inter_thread(String msg){
t=new Thread(obj,msg);
t.start();
}
public static void main(String args[]){
obj=new inter_thread();
inter_thread obj1=new inter_thread("Child1");
inter_thread obj2=new inter_thread("Child2");
try{
obj1.t.join();
obj2.t.join();
}catch(InterruptedException e){
System.out.println("Interrupted");
}
}
public void run(){
int i;
synchronized(obj){
for(i=1;i<=5;i++){
System.out.println(i);
val=!val;
while(val)
try{
wait();
}catch(InterruptedException e){
System.out.println("Interrupted");
}
notify();
}
}
}
}
マルチスレッドを使用して、このような出力を表示したい::
1
1
2
2
3
3
4
4
5
5
出力::
1
1
2
何が問題なのか教えてください。
EDIT2::前のコードを編集しました