错误的写法:
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]的值可以改变。
最后
以上就是狂野故事最近收集整理的关于踏坑:不要用字符串常量去加锁的全部内容,更多相关踏坑内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复