GPS 監視用のサーブレットを実装し、単純なキャッシュを作成しようとしています。これはSQL
、HTTP 要求ごとに要求するよりも高速になると思うためです。簡単なスキーム:
このinit()
メソッドでは、各車両の 1 つのポイントをHashMap
(vehicle id = key, location in json = value) に読み込みます。その後、この点を読み取ろうとするリクエストと、更新しようとするリクエストがあります (1 つの車両が 1 つの項目を更新します)。もちろん、同期を最小限に抑えたいので、javadoc を読みます:
http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html
この実装は同期されていないことに注意してください。複数のスレッドが同時にハッシュ マップにアクセスし、少なくとも 1 つのスレッドがマップを構造的に変更する場合は、外部で同期する必要があります。(構造変更とは、1 つ以上のマッピングを追加または削除する操作です。インスタンスに既に含まれているキーに関連付けられた値を変更するだけでは、構造変更にはなりません。)
私が正しければ、私のタスクには同期はありません。なぜなら、私は「構造的な変更ではない==インスタンスに既に含まれているキーに関連付けられた値を変更しない」だけだからです。それは正しい発言ですか?