使用静态容器防止并发修改同一对象

 

	/**
	 * 同时保存一个对象,需要有一个等待或退出
	 */
	public static final long SAVE_OBJ_ERROR_CODE_WAIT = -9L;
	
	/**
	 * 保存正在保存的对象Id,保存完成后remove,如果保存前发现有相同Id的对象在该map中则说明上一次保存还未结束或有其他人正在修改同一对象,需要等待其完成后才继续操作
	 */
	private static final Map idMap = new ConcurrentHashMap();
	
	public long saveObj(Obj obj)
	{
		String id = obj.getId()==null?"":String.valueOf(obj.getId());
		if (idMap.containsKey(id))
		{
			logger.error(obj.getName() + "(" + id + ")正在保存中,返回该次操作.");
			return SAVE_OBJ_ERROR_CODE_WAIT;
		}
		else
		{
			idMap.put(id, id);
		}
		try
		{
			return objdao.saveObj(obj);
		}
		finally
		{
			idMap.remove(id);
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值