java的lock和synchronized的区别.docx
Java 中的 Lock 和 Synchronized 的区别 Java 语言中有很多相似关键字或相似意义的字,但 lock 和 synchronized 是两个最容易混淆的关键字。它们都是锁的意思,都是为了线程安全性、应用合理性和运行效率的。下面我们来详细探讨这两个单词在 Java 中的基本概念和应用。 相同点 ---------- synchronized 和 lock 都是锁的意思,都是为了线程安全性、应用合理性和运行效率的。可以简单理解 lock 比 synchronized 更加优秀和合理,是前者的优化版。 不同点 ---------- ### 1. 语法结构 synchronized 是 Java 中的关键字,有其语言的内置性。lock 则不是 Java 的关键字,它是 Java 的一个接口类。 ### 2. 锁的释放 被 synchronized 修饰的代码块会自动释放锁,而 lock 则需要手动的释放。lock 如果没有手动释放锁标记,就有可能出现死锁的现象。 ### 3. 死锁 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 死锁的四个必要条件: 1. 互斥条件:一个资源每次只能被一个进程使用; 2. 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放; 3. 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺; 4. 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 ### 4. 锁的释放时机 synchronized 释放锁的两种时机: 1. 获取锁的线程执行完代码块,释放对锁的占有。 2. 线程发生异常,JVM 会让线程自动释放锁。 lock 释放锁: ReentrantLock 加锁(lock())、释放锁(unlock()) ### 5. 解释说明 有了 synchronized 关键字,为什么还需要 lock 这个接口类呢?synchronized 的不足: 1. 如果获取锁的线程等待被执行的代码块是被阻塞了(调用了 sleep 方法/等待 IO 或其它原因),但是没有释放锁,那么这个线程只能等着代码块被执行完,这样在效率上和用户体验上都是很差的。 2. 还有就是多线程写文章时,读操作和写操作会发生冲突现象,写操作和写操作也会发生冲突现象,但是读操作和读操作是不会发生冲突现象的,而你用了 synchronized 锁来实现同步的话两个读操作也会发生冲突,这样是不合理的。 为了解决这两种或者其它的有关问题就可以使用 lock 来实现。 ### 6. lock 的方法和说明 void lock() 获取锁。如果锁不可用,出于线程调度目的,将禁用当前线程,并且在获得锁之前,该线程将一直处于休眠状态。 lockInterruptibly() 如果当前线程未被中断,则获取锁。如果锁可用,则获取锁,并立即返回。如果锁不可用,出于线程调度目的,将禁用当前线程,并且在发生以下两种情况之一以前该线程将一直处于休眠状态:锁由当前线程获得;或者其他某个线程中断当前线程,并且支持对锁获取的中断。 tryLock() 仅在调用时锁为空闲状态才获取该锁。如果锁可用,则获取锁,并立即返回值 true。如果锁不可用,则此方法将立即返回值 false。 lock 和 synchronized 都是锁的意思,但是它们有不同的实现机制和应用场景。lock 提供了更加灵活和高效的锁机制,可以满足不同场景下的需求,而 synchronized 则是 Java 中的关键字,具有语言的内置性。
































- 粉丝: 39
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 预防2021年防范电信诈骗网络诈骗教育班会PPT.pptx
- 认识互联网应对新挑战.ppt
- 首钢钢铁产品交易中心招商项目管理研究.doc
- 通信光缆架空杆路的施工规范.doc
- 大学宿舍楼网络方案设计.doc
- 基于PLC的智能火灾报警系统.doc
- 数据挖掘技术关联性分析.ppt
- 自动化工作面自动配比泵站司机操作规程.docx
- 信息化项目可行性研究报告.pdf
- 第三方物流与电子商务.ppt
- 如何提高工程建设项目管理.docx
- 湖南网络工程职业学院学校团文娱部11月份工作计划1.doc
- 软件项目开发可行性分析报告(20211215103643).pdf
- 电子商务调研报告范文.doc
- 防治水MicrosoftPowerPoint演示文稿.pptx
- 中国电信物联网发展战略PPT课件.ppt


