package com.neutron.t15;
import java.util.concurrent.TimeUnit;
/**
* 不要以字符串常量作为锁定对象
* 在下面的例子中,m1和m2其实锁定的同一个对象。这种情况会发生比较诡异的情况。比如你在某个类库中
* 该类库中代码锁定字符串"hello",如果阅读不到源码,你在你的代码中也锁定"hello",这时候就可能发生
* 非常诡异的死锁阻塞现象。因为你的程序和你用的类库不经意使用同一把锁。
*
*/
public class T15 {
String s1 = "hello";
String s2 = "hello";
public void m1() {
synchronized(s1) {
}
}
public void m2() {
synchronized(s2) {
}
}
}
thread15 - 不要使用字符串常量做锁
最新推荐文章于 2024-06-07 14:21:16 发布