Synchronized无法判断是否获取到了锁,Lock可以判断是否获取到了锁。Synchronized会自动释放锁,Lock必须手动释放锁。Synchronized可重入锁、不可中断、非公平锁。因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识。获得内置锁的唯一途径就是进入这个锁的保护的同步代码块或方法。synchronized的用法:synchronized修饰方法和synchronized修饰代码块。同样,线程获得对象锁的同时,也可以获得该类锁,即同时获得两个锁,这是允许的。这是一个致命的问题。当然同步方法和同步代码块都会有这样的缺陷,只要用了synchronized关键字就会有这样的风险和缺陷。既然避免不了这种缺陷,那么就应该将风险降到最低。这也是同步代码块在某种情况下要优于同步方法的方面。
暂无评论