概述
错误的写法:
static private final String LOCK = "LOCK";
void testMethod() {
synchronized(LOCK) {
...
}
}
正确的写法:
static private final Object LOCK = new Object();
void testMethod() {
synchronized(LOCK) {
...
}
原因:
这个地方的String不用new的方式去创建的话可能会被死锁,因为字符串常量是在JVM中共享的,如果别的程序也用了这个字符串常量去加锁的话很可能会造成死锁。更安全和简便的方法
static private final Object LOCK = new Object();
应该用new,不要直接=,对于int,最好使用int a[0] ,因为array也是对象,不像Integer,a[0]的值可以改变。
最后
以上就是狂野故事为你收集整理的踏坑:不要用字符串常量去加锁的全部内容,希望文章能够帮你解决踏坑:不要用字符串常量去加锁所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复