zoukankan      html  css  js  c++  java
  • 防止多次领取红包进行ID锁

    //controller里面使用锁   

     ActivityRedPacket ap = customerService.getActivityRedPacket(params);
         if (synchronizedUtil.lockActivyId.containsKey(ap.getId())) {//MAP(key)锁里面是否存在锁
            logger.info("<----------------领取红包客户:" + customeid + "多次操作领取红包!---------------------->");
            return;
         } else {
            synchronizedUtil.synchronizedActivyId(ap.getId());/添加锁
         }

      synchronized (synchronizedUtil.lockActivyId.get(ap.getId())) {//获取锁

        try{

                //逻辑

        }finally{

          synchronizedUtil.lockActivyId.remove(ap.getId());//释放锁(移除MAP KEY 值)

        }

      }

    //synchronizedUtil工具类

    public class synchronizedUtil {

       public static final ConcurrentHashMap<Integer, Object> lockVehicle = new ConcurrentHashMap<Integer, Object>();  

       public static final ConcurrentHashMap<Integer, Object> lockOrder = new ConcurrentHashMap<Integer, Object>();    

           public static final ConcurrentHashMap<Integer, Object> lockCustomerId = new ConcurrentHashMap<Integer, Object>();    

           public static final ConcurrentHashMap<Integer, Object> lockActivyId = new ConcurrentHashMap<Integer, Object>();    

           public static synchronized void synchronizedVehicle(Integer vehicleId){  

                  if (!lockVehicle.containsKey(vehicleId)) {    

                         lockVehicle.put(vehicleId, new Object());       

                         return;   

                  }

            }  

            public static synchronized void synchronizedOrder(Integer OrderId){  

                   if (!lockOrder.containsKey(OrderId)) {    

                       lockOrder.put(OrderId, new Object());       

                       return;   

                    }  

             }    

             public static synchronized void synchronizedCustomerId(Integer CustomerId){   

                    if (!lockCustomerId.containsKey(CustomerId)) {    

                         lockCustomerId.put(CustomerId, new Object());       

                         return;   

                     }  

              }    

              public static synchronized void synchronizedActivyId(Integer ActivyId){   

                    if (!lockActivyId.containsKey(ActivyId)) {//是否包含此ID锁不包含则放到MAP里    

                             lockActivyId.put(ActivyId, new Object());      

                             return;   

                    }  

               }

    }

  • 相关阅读:
    5) 十分钟学会android--ActionBar知识串烧
    4) 十分钟学会android--建立第一个APP,启动另一个Activity
    3) 十分钟学会android--建立第一个APP,建立简单的用户界面
    2) 十分钟学会android--建立第一个APP,执行Android程序
    1) 十分钟学会android--建立第一个APP,创建android项目
    08.十分钟学会JSP传统标签编程
    07.十分钟学会tomcat数据源
    06.十分钟学会表达式语言EL
    将JSON打印到页面:
    Json对象的属性如何替换
  • 原文地址:https://www.cnblogs.com/cuijinlong/p/6235777.html
Copyright © 2011-2022 走看看