方法加锁问题

ansensp 2013-11-29 01:29:27
public void doSomthing(long userId){
......
}

为防止同一用户连续执行该方法而出现并发问题,想通过userId进行加锁,这样既可防止同一用户并发问题,又不影响其他用户, 代码如下:
String myLock = (userId + "").intern();
synchronized(myLock){
....
}

不知这样做好不好,高并发下会不会造成方法区内存溢出? 谢谢。
...全文
377 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
linhua11 2013-11-29
  • 打赏
  • 举报
回复
intern后应该是放在java stack里面的,一般stack容量不会很大。 如果多的话,还是会出StackOverflow吧, 建议评估一下intern的string 实例数量, 然后设置一个合适的stack大小
teemai 2013-11-29
  • 打赏
  • 举报
回复
不会内存溢出的。
  • 打赏
  • 举报
回复
并发处理公共资源的时候都是用同步的,不会造成你当心的方法区内存溢出
zhuweisyyc 2013-11-29
  • 打赏
  • 举报
回复
你用字符串内联,或许可以造出一个共享对象。但是只是解决了并发 方法还是会重复执行,不能解决重复执行出现的重复数据。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧