1

JAVAの特定のメソッドへの複数のアクセスを制限する手順を知りたいと思いました。同じメソッドが多くのマシン(結果セットを返す)によって並列に呼び出される場合、最初のメソッド呼び出しがプロセスを完全に完了するまで、2番目のメソッド呼び出しを待機させたいと思いました。この機能を実現するためのJavaの機能はありますか。

私は、DBからExcelファイルを開き、その中の変数をユーザー値で処理し、DB内のtatレポートを更新し、更新されたコピーをユーザーにダウンロードするJavaEEアプリケーションに取り組んでいます。

ここで、複数の人がファイルを開き、同時にデータを処理する場合、エラーが発生します。この問題を解決するのを手伝ってください。

4

2 に答える 2

1

synchronized異なる JVM で呼び出し元を制限したい場合、使用は機能しません。すべての呼び出し元が使用できる単一のロックがないためです。各呼び出し元は、アプリケーションの独自のインスタンスに対してローカルなロックを使用しています。したがって、Java にはこれを行う方法がありません。

全員が共有しているのはデータベース内の行であり、それをロックする必要があります。Excel ファイルがデータベースの BLOB にあり、Excel ファイルで行うすべての操作を 1 つのトランザクション内で実行できると仮定すると、データベース トランザクションと排他ロックを使用してデータへのアクセスを制限できます。

于 2013-01-08T14:29:18.533 に答える
0

同期メソッドの説明については、ここを参照してください。これにより、1人を除くすべての発信者がブロックされ、順番に着信します。

于 2013-01-07T09:12:30.400 に答える