专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 问答 技术问答 synchronized和Lock有什么区别?

synchronized和Lock有什么区别?

为期待而延续已回答

Java 开发,愉快、学习。

synchronized 是 java 内置关键字,在 jvm 层面,Lock 是个 java 类

synchronized 无法判断是否获取锁的状态,Lock 可以判断是否获取到锁

synchronized 会自动释放锁(a 线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁),Lock 需在 finally 中手工释放锁(unlock() 方法释放锁),否则容易造成线程死锁

用 synchronized 关键字的两个线程 1 和线程 2 ,如果当前线程 1 获得锁,线程 2 等待。如果线程 1阻塞,线程 2 则会一直等待下去,而 Lock 锁就不一定会等待下去,如果尝试获取不到锁,线程可以不用一直等待就结束了

synchronized 的锁可重入、不可中断、非公平,而 Lock锁 可重入、可判断、可公平(两者皆可)

Lock 锁适合大量同步的代码的同步问题,synchronized 锁适合代码少量的同步问题

浏览990技术问答
2021-09-02 09:30:54

聚焦热点问题
时时免费答疑

累计0人询问

极速问
  >>其他人还看过
更多问答

Java实验班

0学费 专业学前测评

Java就业班

围绕企业 直达就业

Java夜校班

业余时间学 超高性价比

Java架构师班

升职加薪 快速变现

返回顶部