スレッドを使用したこの並行プログラミングを理解しようとしていますが、この wait() と notify() を取得していないようです
私のスレッドの 1 つが永遠に待機しており、通知が既に呼び出されていることに関係があると思われます。しかし、これを解決する方法がわかりません。stackoverflow の他の投稿を読みましたが、よく理解できませんでした。
これが私のコードです。誰かが私を正しい方向に特定できると助かります。
package com.example.thread_android;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("Stage", "onCreate");
Runnable AthreadJob = new ARunnable();
Runnable BthreadJob = new BRunnable();
Thread myThreadOne = new Thread(AthreadJob);
Thread myThreadTwo = new Thread(BthreadJob);
myThreadOne.start();
myThreadTwo.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
class ARunnable implements Runnable{
@Override
public void run(){
Log.d("Runnable", "A Inside Run - WAIT");
try{
synchronized(this){wait();}
} catch (InterruptedException e) {}
//Log.d("Runnable", "A Inside Run - CONTINUE");
}
}
class BRunnable implements Runnable{
@Override
public void run(){
Log.d("Runnable", "B Inside Run");
synchronized (this) {notify();}
}
}