バックグラウンドで作業しているスレッドがありますが、常にやるべきことがあるとは限りません。メインスレッドからデータが渡されるのを待ってから、作業を続けたいと思います。
wait()最初はそれが目的だと思ってnotify()いましたが、逆にうまくいくようです。
それ、どうやったら出来るの?
バックグラウンドで作業しているスレッドがありますが、常にやるべきことがあるとは限りません。メインスレッドからデータが渡されるのを待ってから、作業を続けたいと思います。
wait()最初はそれが目的だと思ってnotify()いましたが、逆にうまくいくようです。
それ、どうやったら出来るの?
私のコメントを参照してください。
これは、生産者と消費者の問題の非常に一般的な
BlockingQueue要件です。車輪を再発明しないようにしてください;-)
複数の実装が存在しますBlockingQueue。たとえば、 bounded ArrayBlockingQueue、 unbounded LinkedBlockingQueue、 hand-off SynchronousQueue、さらにはPriorityBlockingQueue. すべてBlockingDequeの とTransferQueueもBlockingQueues です ;-)
ExecutorService を使用することをお勧めします。キューとスレッド プールを組み合わせます。
可能な限りバックグラウンドで実行されるタスクをそれに送信し、必要に応じて結果を取得できます。
ExecutorService service = Executors.newWhateverPool();
service.submit(new Runnable() { your task here });