Sychronozed | ReentrantLock |
java中的一个关键字 | JDK中的一个类 |
synchronized 不需要用户去手动释放锁,synchronized 代码执行完后系统会自动让线程释放对锁的占用; | 需要手动加锁和释放锁,如果没有手动释放锁,就可能导致死锁现象。一般通过lock()和unlock()方法配合try/finally语句块来完成,使用释放更加灵活。 |
JVM层面的锁 | API层面的锁 |
非公平锁 | 公平锁与非公平锁 |
锁的是对象,锁信息保存在对象头中 | Int类型的state标识来标识锁的状态 |
底层有锁升级过程 | 没有锁升级过程 |
不可中断(除非出现异常或者执行完成) | 可中断,(可通过trylock(long timeout,TimeUnit unit)设置超时方法或者将lockInterruptibly()放到代码块中,调用interrupt方法进行中断。) |
Sychronozed和ReentrantLock有什么区别?
于 2023-03-15 19:16:40 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)