synchronized锁字符串问题 + String.intern()解决

此问题在做教育系统是遇到,业务需要对同一节课的业务数据操作加锁,因此使用课表ID(32位字符串)作为锁对象。

synchronized (id) {
    ...
}
但实际中发现并未做到同步,原因是每次课表id虽然equals,但实际并不是同一个对象,因此使用String.intern()解决。

synchronized (id.intern()) {
    ...
}



你可能感兴趣的:(Java)