Lock和synchronized的区别
1、Lock是接口,而synchronized是java的关键字;
2、synchronized发生异常时,自动释放线程占有的锁,不会导致死锁现象的发生;Lock发生异常时,如果没有通过unLock()释放锁
,可能会造成死锁现象,使用Lock需要在finally块中释放锁;
3、Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized的线程,等待的时候会一直等待下去,不能够响应中断。
4、Lock可以知道有没有成功的获取锁,而synchronized无法办到;
5、Lock可以提高多个线程进行读写操作;
6、jdk1.5中synchronized性能比Lock差,影响阻塞式的实现,挂起线程或回复线程都需要转入内核态中完成,jdk1.6后synchronized提高了很多,提供了自适应自旋,锁消除,轻量级锁,偏向锁,锁粗话等。