当前位置:编程学习 > JAVA >>

方法加锁问题

public void doSomthing(long userId){
  ......
}

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

不知这样做好不好,高并发下会不会造成方法区内存溢出? 谢谢。 --------------------编程问答-------------------- 你用字符串内联,或许可以造出一个共享对象。但是只是解决了并发
方法还是会重复执行,不能解决重复执行出现的重复数据。 --------------------编程问答-------------------- 并发处理公共资源的时候都是用同步的,不会造成你当心的方法区内存溢出 --------------------编程问答-------------------- 不会内存溢出的。 --------------------编程问答-------------------- intern后应该是放在java stack里面的,一般stack容量不会很大。 如果多的话,还是会出StackOverflow吧, 建议评估一下intern的string 实例数量, 然后设置一个合适的stack大小
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,