synchronized和lock区别

1.存在层次,synchronized是java关键字,在jvm层面上,而Lock是jvm的一个接口
2.锁的获取,synchronized假设A线程获取到锁,B线程等待,如果A线程阻塞,B线程会一直等待;Lock视情况而定,Lock有多个锁获取方式,大致就是可以尝试获取锁,线程可以不用一直等待(可以通过tryLock判断有没有锁)
3.锁的释放,synchronized:以获取锁的线程执行完同步代码释放锁,线程执行发生异常,jvm会让线程释放;Lock是在finally中必须释放锁,不然容易造成线程死锁。
4.锁类型,synchronized:锁可重入、不可中断、非公平;Lock可重入、可判断、可公平。
5.性能,synchronized:少量同步;Lock适用于大量同步。
6.支持锁的场景,synchronized:独占锁;Lock公平锁与非公平锁

你可能感兴趣的:(synchronized和lock区别)