错误的写法:
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]的值可以改变。