我是靠谱客的博主 狂野故事,这篇文章主要介绍踏坑:不要用字符串常量去加锁,现在分享给大家,希望可以做个参考。

错误的写法:

 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]的值可以改变。

最后

以上就是狂野故事最近收集整理的关于踏坑:不要用字符串常量去加锁的全部内容,更多相关踏坑内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(109)

评论列表共有 0 条评论

立即
投稿
返回
顶部