ConcurrentHashMap的putIfAbsent方法使用

    /**
    * @Description 限制一个用户多次登陆
    * @Date   2019/3/21 16:46
    * @Param  [user, currentSessionId]
    * @Return      boolean
    * @Exception
    *
    */
    public static boolean OneUserOnlineCheck(User user, String currentSessionId) {

        String userId = user.getUSER_ID();
        /**如果key对应的值value不存在就put,且返回null。如果key对应的值value已存在,
        则返回已存在的值,且value不能为null,否则会报空指针异常。*/
        String mapSession = oneUserCheckMap.putIfAbsent(userId,currentSessionId);

        if (mapSession == null){
            return true;
        }
        return mapSession.equals(currentSessionId);
//        if (!oneUserCheckMap.containsKey(userId)) {
//            oneUserCheckMap.put(userId, currentSessionId);
//            return true;
//        } else {
//            String mapSessionId = oneUserCheckMap.get(userId);
//            if (mapSessionId.equals(currentSessionId)) {
//                return true;
//            }
//            return false;
//        }
    }

你可能感兴趣的:(基础)