为了账号安全,请及时绑定邮箱和手机立即绑定

关于并发的一个问题

关于并发的一个问题

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

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

ConcurrentHashMap lastRequestMap = ...

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

return;

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


查看完整回答
反对 回复 2019-04-25
  • 1 回答
  • 0 关注
  • 327 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信