关于并发的一个问题

我有这样一个接口,一个用户5秒内只能响应一个请求。
先创建一个concurrenthashmap 使用concurrenthashmap.putIfAbsent(userid,time)若添加成功则请求响应,否则就是丢弃这个请求,然后程序的finally{}里根据时间remove(userid).这样能实现这个问题吗?你们有什么好的解决方法,自己项目里的这个需求暂时不考虑用redis和zookeeper

阅读 1.7k
1 个回答

ConcurrentHashMap lastRequestMap = ...

long now = System.currentTimeMillis()
Long lastRequestTime = lastRequestMap.get(userid)
if(lastRequestTime != null && lastRequestTime > now - 5秒钟) {

 return;

}
lastRequestMap.put(userid, now)
......

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题