package com.system.util; import com.common.Constants; import com.util.Cache; /** * 創建同步對象鎖 * * @author jqlin * */ public class SyncObject { /**唯一對象*/ private Object obj; public SyncObject(Object obj) { this.obj = obj; } /** * 獲取同步對象鎖 * * @param cache 緩存對象 * @param preCacheKey 唯一標識緩存的ID * @param obj 唯一對象 * @return */ public static synchronized SyncObject getSyncObject(Cache cache, String preCacheKey, Object obj) { SyncObject sysObject = cache.get(preCacheKey + obj); if (sysObject == null) { sysObject = new SyncObject(obj); cache.put(preCacheKey + obj, sysObject); } return sysObject; } public Object getObj() { return obj; } public void setObj(Object obj) { this.obj = obj; } public static void main(String[] args) { Cache cache = null; String userId = null; SyncObject syncOrder = SyncObject.getSyncObject(cache, Constants.DQ_REDEMP_CACHE, userId); synchronized (syncOrder) { //todo } } }