保护没有关联关系的多个资源

没有关联关系的资源,每个资源都加锁就行,无所谓是同一把还是不同。但是如果是相同的锁,就要注意同时获取各个资源的时候性能问题

保护有关联关系的

要选择一个粒度更大的锁,这个锁应该能够覆盖所有相关的资源。

课后思考

在第一个示例程序里,我们用了两把不同的锁来分别保护账户余额、账户密码,创建锁的时候,我们用的是:private final Object xxxLock = new Object();,如果账户余额用 this.balance 作为互斥锁,账户密码用 this.password 作为互斥锁,你觉得是否可以呢?

答案

不能用可变对象作为锁