java的锁对象问题

ksfzhaohui 发布于 2013/05/06 14:51
阅读 237
收藏 0

synchronized (Integer.valueOf(userId))    userId是一个int类型

用一个基本类型的包装类来作为锁对象,本地测试过是可以互斥的,但是不确定是否可以这样写?

加载中
1
tuds
tuds
因为当值是-128~127范围之外会创建新的 Integer对象
0
逝水fox
逝水fox
默认情况下,userId除非是-128~127,否则你这锁没用
0
ksfzhaohui
ksfzhaohui

引用来自“逝水fox”的答案

默认情况下,userId除非是-128~127,否则你这锁没用
能解释一下原因吗
ksfzhaohui
ksfzhaohui
回复 @逝水fox : 非常感谢!!! 调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串,则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。
逝水fox
逝水fox
楼下解释了,如果确实有锁uid的必要,考虑用字符串 (userId + "").intern()
0
ksfzhaohui
ksfzhaohui
懂 了,谢谢啊
0
vps评测资讯网
vps评测资讯网
懂了  ,,谢谢 。
返回顶部
顶部