レコードのセット(recordA、recordBなど)を含むテーブルをメモリ内に含むプロセスAがあります。
現在、このプロセスはレコードに影響を与える多くのスレッドを起動でき、同じレコードにアクセスしようとする2つのスレッドが存在する場合があります。この状況は拒否する必要があります。具体的には、レコードが一方のスレッドによってロックされている場合、もう一方のスレッドを中止します(ブロックまたは待機したくない)。
現在、私は次のようなことをしています。
synchronized(record)
{
performOperation(record);
}
しかし、これは私に問題を引き起こしています... Process1が操作を実行している間、Process2が入ってくると、同期されたステートメントをブロック/待機し、Process1が終了すると操作を実行します。代わりに私はこのようなものが欲しいです:
if (record is locked)
return;
synchronized(record)
{
performOperation(record);
}
これをどのように達成できるかについての手がかりはありますか?どんな助けでも大歓迎です。ありがとう、