2017-04-26 8 views
2

私はデフォルトの方法がシングルトンであることを知っています。現在、私のコントローラメソッドでは、データを更新してデータをロックしたいと思います。ユーザーがデータを更新する前に、彼が更新できるかどうかを判断します他のテーブル項目のステータスに変更します。 例:ユーザーAがデータを訪問した場合、データ値を1に更新し、他のユーザーが更新できないことを意味するステータスフィールドを更新してデータをロックします。 。しかし、同時に、ユーザーBのデータを訪問する可能性があります、彼は2にデータ値を更新する可能性があります。私はまた、ユーザーBのファイルを削除することができますか?
コントローラメソッドに同期キーワードを追加する必要がありますか?またはtomcatサーバーまたはspring mvcがこの問題に対処するのに役立っていますか?今私が望むのは、1人のユーザーだけがデータを更新し、1つの使用ファイルを削除できることです。ページに同時にアクセスするユーザーが複数いる場合は、contrlloerメソッドに同期キーワードを追加する必要がありますか?

+1

各ピリオドとコンマの後にスペースを挿入すると、あなたの質問は読みやすくなります。 –

答えて

1

一般的にコントローラをマルチスレッド化しないでください。コントローラのメソッドを同期させないでください。また、「デフォルトの方法はシングルトンだということを知っています」 - 何のためのデフォルトの方法ですか?コントローラは一般的にシングルトンである必要はありません。コントローラはビ​​ジネスロジックを処理すべきではありません。それがモデルの仕事(「MVC」の「M」)です。記述したすべてのテーブル・ロジックを処理するリソース・マネージャーまたはコンポーネントは、おそらくマルチスレッド化すべきではありません。単一スレッドのリソースマネージャーははるかに混乱が少ないです。そしてそれはシングルトンである必要はありません。それらのいずれかをインスタンス化するだけです。 (リソースマネージャは、複数のリソースを管理するなど、複数のインスタンスを必要とする場合があります)

あなたのコードを示す必要があります。

+0

コントローラがサービスを呼び出す、つまり、私はコントローラまたはサービスを追加するためにsychronizedキーワードを追加することを意味します。コントローラは一般的にマルチスレッド化すべきではありません。多くのユーザが同時にウェブサイトを訪れますが、この種の現象はかなり正常です。 – flower

+0

あなたのポイントはどうですか? –

関連する問題