私はデータを含むオブジェクトを持っていますが、このオブジェクトでアクション(実行可能なメソッドとのインターフェイス)をキューに入れています(そのメソッドはオブジェクトのデータをメソッド内で使用します)別のスレッドから実行されます。Javaマルチスレッドの問題
オブジェクトをアクションキューに送信した後にロックしたいと思います(メインスレッドから)。
他のスレッドがアクションキューを介して処理する前に、オブジェクトのデータを変更したくないためです。
そして、アクションキューが処理されると、他のスレッドからロックを解除したいと思います。
コードイラスト:
// THREAD 1
final Object object = getObjectFromSomeWhere();
// lock the object here
concurrentActionQueue.add(new Action() {
@Override
public void execute() {
// will be executed from THREAD 2
// do something with object
//unlock here once the data is processed
}
あなたは、私はアクションにオブジェクトのコピーを送った可能性がありますが、私のオブジェクトは非常に大きなデータを含むされ、コピーが、私がすることはできませんので、多くの時間を取っていると言うでしょう。
lock()メソッドとunlock()メソッドをオブジェクトにハードコードしないと、これを行う方法はありますか?
消費者プロデューサーパターンおそらく?ここでは、非常に単純な(最高ではない)[チュートリアル](https://www.tutorialspoint.com/javaexamples/thread_procon.htm)から始める – AntJavaDev