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 - 不要使用字符串常量做锁
最新推荐文章于 2026-04-23 16:35:15 发布
本文探讨了使用字符串常量作为同步锁可能导致的问题,特别是在不同类库间共享同一锁时可能出现的死锁情况。
9987

被折叠的 条评论
为什么被折叠?



