Synchronized性质
* 什么是可重入:指的是同一线程的外层函数获得锁之后,内层函数可以直接再次获取该锁,而不是释放当前的锁去重新获取一个锁,这是它的一个优点
* 好处:避免死锁,提升封装性
* 粒度:是线程范围而非调用范围
情况一:同一个方法是可以重入的
情况二:不同方法是可以重入的
情况三:不同类是可以重入的
一旦这个锁已经被别人获得了,如果我还想获得,我只能等待或者阻塞,直到别人释放这个锁,如果别人永远不释放锁,那么我只能永远等待下去,这是一个缺点
相比之下Lock类拥有中断的能力,如果我等的时间太长了,有权中断正在执行的线程,如果不想等了,可以退出。
不够灵活
加锁和释放锁单一,每个锁仅有单一的条件(某个对象),可能是不够的
无法知道是否成功获取到锁
生命不止,折腾不息