显式与内在
当您
synchronized在对象上使用或间接用作方法签名的一部分时,您正在创建内部锁。您依赖与所有对象和类关联的内置锁。
软件包中的Java
5+提供了显式锁
java.util.concurrent.locks。最常用的类可能是
ReentrantLock。这些提供了使用固有锁的替代方法,并提供了固有锁无法实现的功能。
类级别与对象级别
这种区别仅适用于内在锁。如果您具有同步的静态方法,则使用的固有锁将与类对象本身关联。如果在对象实例上进行同步(或具有同步的实例方法),则它将是对象级锁。
进一步阅读
Brian Goetz的《 Java Concurrency in Practice》 是一本极好的书,它理解了Java中多线程编程的噩梦般的世界。



