共通リソース (データベース) にアクセスするクラスのインスタンスを同期しようとしています。これは notify と wait() を使用して行うことができますが、異なる Java プログラムがインスタンスを作成するためにこのクラスを使用している場合、それらを同期する方法よりも知っておく必要があります。ありがとうございました
質問する
1092 次
2 に答える
1
複数のプロセスがリソースを共有している場合、同期は役に立ちません。同期待機/通知モデルは、単一プロセス内の複数のスレッドで使用するように設計されています。
リソースを明示的にロックするロジックを記述する必要があります。あなたのシナリオでは、他のプロセスが同時にアクセスできないように、作業する前にデータベース テーブルをロックする必要があります。
Oracle データベースを使用している場合は、データベース テーブルに対して lock ステートメントを使用できます。
LOCK TABLE ステートメントを使用して、指定されたロック モードでデータベース テーブル全体をロックし、それらへのアクセスを共有または拒否できるようにします。行共有ロックは、テーブルへの同時アクセスを許可します。他のユーザーがテーブル全体を排他的にロックするのを防ぎます。トランザクションがコミットまたはロールバックを発行すると、テーブル ロックが解放されます。
于 2013-09-29T16:02:23.103 に答える