0
我被給了一個代碼,它根據用戶名和服務類型創建一個唯一的id。 獨特的ID是在DB中,數據庫通過DAO類讀取,我不能看到。它需要很多步驟來創建id。使用db值進行Java同步
create(user,service) {
id=getIdViaDAO(user,service)
if(id==null) {
create few classes and call few methods.
id=generareId(few objects)
session.setId(id)
dao.createSession(session)
}
return id
}
在多線程環境中,不能保證唯一的id。
爲了保證唯一性
解決方案:我會緩存ID與用戶id +服務爲重點和ID值的ConcurrentHashMap。每當方法被調用時,我將檢查值(id)是否存在鎖的密鑰並創建id。這將減少爭用並保證唯一性。
想知道我的解決方案是否存在問題和/或是否有更好的解決方案?
id是一個局部變量 – 2011-02-03 17:17:24