简述synchronized和java.util.concurrent.locks.Lock的异同 ?
主要相同点:
Lock能完成synchronized所实现的所有功能。
主要不同点:
- Lock有比synchronized更精确的线程语义和更好的性能。
- synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放
- Lock还有更强大的功能,例如,它的tryLock方法可以非阻塞方式去拿锁。
- synchronized 是Java 语言层面的,是内置的关键字,java.util.concurrent.locks.Lock时一个类。