private final Object lockObject = new Object();
public void getCount() {
synchronized( lockObject ) {
...
}
}
为什么上面的代码比下面的代码更好:
public void synchronized getCount() {
...
}
我搜索并找到了如下所述的解释。
将其放在方法上意味着您正在使用对象本身的锁来提供线程安全。通过这种机制,恶意代码用户也可能获得对象上的锁,并将其永久持有,从而有效地阻塞了其他线程。非恶意用户可以无意中有效地执行相同的操作。
但是我无法完全理解这一点。恶意用户如何永久持有锁?任何人都可以用示例代码进行解释,以证明上述情况是正确的吗?
交互式爱情
慕码人2483693
相关分类