1. 可重入性
synchronized的锁对象中有一个计数器(recursions变量)会记录线程获得几次锁;
可重入的好处:
- 可以避免死锁;
- 可以让我们更好的封装代码;
- synchronized是可重入锁,每部锁对象会有一个计数器记录线程获取几次锁,在执行完同步代码块时,计数器的数量会-1,直到计数器的数量为0,就释放这个锁。
2. 不可中断性
- 一个线程获得锁后,另一个线程想要获得锁,必须处于阻塞或等待状态,如果个线程不释放锁,第二个线程会一直阻塞或等待,不可被中断;
- synchronized 属于不可被中断;
- Lock lock方法是不可中断的;
- Lock tryLock方法是可中断的;