2016-02-06 53 views
2

我正在使用DropWizard創建一個簡單的演示系統來創建一個簡單的REST API,它將只使用HashMapArrayList來實現數據持久性。DropWizard API和內存持久性 - 競爭條件

我想知道多個請求進來,並有競爭條件來讀取/寫入數據。

是否足夠簡單地同步對這些方法的訪問?這是否會緩解任何潛在的問題?

此演示用於面試,因此API不會有任何主要負載。我只是想解決潛在的問題,我想知道如果同步方法可以做到這一點?謝謝。

回答

2

通過正確鎖定不同線程/進程使用的對象來解決競態條件。

您可以使用Collections.synchronizedMap()Collections.synchronizedList()來獲得正確同步的實例,但如果完整狀態由多個對象組成,則可能不適用。

在這種情況下,您應該通過同步所有對它的訪問來妥善保護完整狀態。然後,您將使用集合實例的非同步版本,但同步對處理所有狀態的對象的訪問。