此问题在做教育系统是遇到,业务需要对同一节课的业务数据操作加锁,因此使用课表ID(32位字符串)作为锁对象。
synchronized (id) {
...
}
但实际中发现并未做到同步,原因是每次课表id虽然equals,但实际并不是同一个对象,因此使用String.intern()解决。
synchronized (id.intern()) {
...
}
此问题在做教育系统是遇到,业务需要对同一节课的业务数据操作加锁,因此使用课表ID(32位字符串)作为锁对象。
synchronized (id) {
...
}
但实际中发现并未做到同步,原因是每次课表id虽然equals,但实际并不是同一个对象,因此使用String.intern()解决。
synchronized (id.intern()) {
...
}