以下のように機能する必要がある2つのメソッドがあります。
method1 {
1. run logic and insert into table1
}
method2 {
1. wait till other threads finish method1
2. block future threads from starting method1
3. update table1
}
最も簡単な解決策は、method1 と method2 の両方を同期することです。もう 1 つの考慮事項は、method1 は複数のスレッド (>10) から呼び出すことができ、一般的な操作であるのに対し、method2 はほとんど呼び出されないことです。そのため、方法 1 を同期すると、マルチプロセッシング機能が大幅に妨げられます。
メソッド 1 で readLock を使用し、メソッド 2 で writeLock を使用して、ReadWriteLock を使用する可能性を探りました。しかし、それはメソッド 2 の #1 では役に立ちません。メソッド 2 で writeLock を取得した後、メソッド 2 に進む前にメソッド 1 で実行中のスレッドを完了させたいと考えています。