私はJavaと並行処理のことが新です。ハッシュマップから同時に要素を追加または削除して同期を達成する
割り当ての目的は、並行性を学ぶことでした。 - この質問に答えるときは、ハッシュマップ(本質的には同期されていない)だけを使用して、それを自分で同期することになっていることを覚えておいてください。知識を増やしていただければ幸いですが、必須ではありません。
private HashMap<String, Flight> flights = new HashMap<>();
レコードIDが削除される飛行の鍵です:
は、私はこのようなハッシュマップを宣言しました。Flight flightObj = flights.get(recordID);
synchronized(flightObj){
Flight deletedFlight = flights.remove(recordID);
editResponse = "Flight with flight ID " + deletedFlight.getFlightID() +" deleted successfully";
return editResponse;
}
ここで私の疑問:flightObjに基づいて同期するのは良いですか?
・ダウト2:
Flight newFlight = new Flight(FlightServerImpl.createFlightID());
flights.put(newFlight.getFlightID(),newFlight);
私は、コードの上に使用してflighttsを作成し、複数のスレッドを実行しようとした場合、このコードは、任意のデータの整合性の問題があるでしょうか?なぜ、なぜそうではないのですか?
ありがとうございます。
は、このようなシンプルかつ包括的な答えをそんなに@Alex L.ありがとうございました。今私がどのようにコンテンツを感じているのかは分かりません。 – Aakash