Synchronized(锁):
synchronized 是 Java 中的一个关键字,用于同步方法或代码块,确保只有一个线程可以执行被 synchronized 修饰的代码段。
它是一种内置的同步机制,提供了一种简单的方式来实现对共享资源的互斥访问。
synchronized 可以用于方法或特定的代码块,并且可以自动获取和释放锁。
它不支持尝试获取锁、超时等待或中断等待等操作。
synchronized 锁是非公平的,不保证等待时间最长的线程优先获取锁。
Lock(锁):
Lock 是 Java java.util.concurrent.locks 包中的一个接口,提供了与 synchronized 不同的锁操作。
Lock 允许更灵活的锁控制,例如尝试获取锁、超时等待、可中断的锁获取等。
它通常与 try-finally 块一起使用,以确保锁最终被释放,防止死锁。
Lock 可以实现公平锁,即按照线程等待的顺序来分配锁。
Lock 接口的一些常见实现包括 ReentrantLock 和 ReadWriteLock。
如果有侵权,请联系我删除。谢谢。