我是Java新手和併發的東西。從Hashmap中同時添加或刪除元素並實現同步
該任務的目的是學習併發性。 - 所以當回答這個問題時,請記住,我應該只使用Hashmap(本質上不同步)並自己同步它。如果你提供更多的知識,但不是必需的。
我宣佈這樣一個HashMap:
private HashMap<String, Flight> flights = new HashMap<>();
的recordId是要刪除的飛行的關鍵。
Flight flightObj = flights.get(recordID);
synchronized(flightObj){
Flight deletedFlight = flights.remove(recordID);
editResponse = "Flight with flight ID " + deletedFlight.getFlightID() +" deleted successfully";
return editResponse;
}
現在我懷疑:在flightObj的基礎上同步很好嗎?
疑點二:
Flight newFlight = new Flight(FlightServerImpl.createFlightID());
flights.put(newFlight.getFlightID(),newFlight);
如果我用上面的代碼創建flightts如果多個線程試圖執行該代碼會不會有任何數據一致性問題?爲什麼或者爲什麼不?
在此先感謝。
謝謝你這麼多@Alex L.這樣一個簡單而全面的解答。我無法告訴你我現在的感受如何。 – Aakash