Java | synchronized和Lock

news2024/10/5 18:27:35

不爱生姜不吃醋⭐️
如果本文有什么错误的话欢迎在评论区中指正
与其明天开始,不如现在行动!

文章目录

  • 🌴前言
  • 🌴一、同步锁
  • 🌴二、Lock锁
  • 🌴三.死锁
  • 🌴总结


🌴前言

本文内容是关于Java中锁的内容,包括synchronized和Lock。


🌴一、同步锁

synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A)运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,锁定调用者,然后直接运行。它包括两种用法:synchronized 方法和 synchronized 块。

比如:电影院窗口卖票,就需要使用同步锁。

一个小知识StringBufferStringBuilder相比是线程安全的。因为StringBuffer中的方法都加了synchronized同步锁。

StringBuffer

在这里插入图片描述

StringBuilder

在这里插入图片描述

🌴二、Lock锁

为了更清晰的表达如何加锁和释放锁,JDK5之后提供了一个新的锁对象Lock

Lock实现提供比使用 synchronized方法和语句可以获得更广泛的锁定操作。

Lock中提供了获得锁释放锁的方法。

void lock():获得锁
void unlock():释放锁

Lock是接口,不能直接实例化,采用它的实现类ReentrantLock来实例化。


🌴三.死锁

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

产生死锁的必要条件:
1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。
2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。


🌴总结

本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1006239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KeyError: ‘mmrotate.RotLocalVisualizer is not in the visualizer registry.

问题 今天用MMyolo训练RTMDet模型的时候,报错: KeyError: ‘mmrotate.RotLocalVisualizer is not in the visualizer registry. Pleasecheck whether the value of mmrotate .RotLocalvisualizer is correct or it wasregistered as expected. More det…

公众号留言功能不见了怎么办?如何恢复?

为什么公众号没有留言功能?2018年2月12日,TX新规出台:根据相关规定和平台规则要求,我们暂时调整留言功能开放规则,后续新注册帐号无留言功能。这就意味着2018年2月12日号之后注册的公众号不论个人主体还是组织主体&…

TableConvert-免费在线表格转工具 让表格转换变得更容易

在线表格转工具TableConvert TableConvert 是一个基于web的免费且强大在线表格转换工具,它可以在 Excel、CSV、LaTeX 表格、HTML、JSON 数组、insert SQL、Markdown 表格 和 MediaWiki 表格等之间进行互相转换,也可以通过在线表格编辑器轻松的创建和生成…

无损剪切音视频文件的跨平台工具: LosslessCut | 开源日报 0908

mifi/lossless-cut Stars: 17.3k License: GPL-2.0 LosslessCut是一款跨平台的FFmpeg GUI工具,它可以对视频、音频和字幕等相关媒体文件进行快速无损操作。 该软件最主要的功能是无损剪切和裁剪音视频文件,可以使用它快速提取出好的部分并丢弃其余片段…

录视频软件哪个好?挑选指南来啦!(3款)

视频录制是在数字时代中广泛应用的一种技术,它能够捕捉并记录下屏幕上的内容和操作。而录视频软件是一种将计算机屏幕、摄像头画面或游戏画面录制成视频的工具。在本文中,我们将为您推荐3款优秀的录视频软件,帮助您更好地录制、编辑和分享视频…

​基于MCTS和Residual-EBM的数学推理能力提升实践

©PaperWeekly 原创 作者 | 许皓天 导读 LLM 在 NLP 以及 ai-agent 等场景展现出了巨大的应用潜力,并且在复杂推理任务如 math 等任务极大提升了模型性能。 近期,基于 llama2 的 RFT [1] 以及 wizard-math [2] 等通过 rejection-sampling、RLEIF&am…

2023--亲测C语言环境搭建并运行一个简单的贪吃蛇(含编译后的exe)_window

一. 说明 安装教程博客参考这里博主写的用VScode加C语言编译器(MinGW-W64 GCC)的方式在window搭建的方法. 博客里面要用上的资源0积分下载(vscode那个不翻墙下载得太慢了) *就别再用什么VC6.0了,都win11都出来了&am…

金蝶云星空和金蝶云星空接口打通对接实战

金蝶云星空和金蝶云星空接口打通对接实战 接通系统:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”,旨在帮助…

阿里后端开发:抽象建模经典案例【文末送书】

文章目录 写作前面1.抽象思维2.软件世界中的抽象3. 经典抽象案例4. 抽象并非一蹴而就!需要不断假设、验证、完善5. 推荐一本书 写作末尾 写作前面 在互联网行业,软件工程师面对的产品需求大都是以具象的现实世界事物概念来描述的,遵循的是人…

如何一次让ChatGPT输入多个版本的内容供你选择

随着人工智能的不断进步,我们对于AI工具的需求也在日益增加。尤其是像GPT这样的高级工具,单一的答案输出已经不能满足用户的多元需求。实际上,当我们面对一个问题时,多种答案的输出能让我们更全面地了解和思考,这样我们…

小程序赖加载刷新数据页面数据堆叠问题debug

目录 项目所需 原生写赖加载存在的bug 解决问题思路及代码实现 思路: 代码实现: 列表.wxml 列表.js Wenjain_shanchu.js Wenjain_shanchu.json Wenjain_shanchu.wxml shouye.js ⭐️ 好书推荐 【内容简介】 项目所需 某高校大一新生入学&am…

LLM 02-大模型的能力

LLM 02-大模型的能力 我们将深入探讨GPT-3——这个具有代表性的大型语言模型的能力。我们的研究主要基于GPT-3论文中的基准测试,这些测试包括: 标准的自然语言处理(NLP)基准测试,例如问题回答;一些特殊的一…

浅谈Oauth2.0授权

一、背景 近期公司准备上身份认证平台(IAM),主要有两块内容,一部分是单点登录、一部分是账号生命周期管理。其中涉及几个常用的单点登录标准认证协议,其中有SMAL、LOAP、CAS、OIDC、Oauth2.0,本篇文章对Oau…

计算机毕设之基于springboot+vue的社区团购管理系统的设计与实现--前后端分离项目(内含源码+文档+教程)

博主介绍:✌全网粉丝10W,Java领域新星创作者,前互联网大厂软件研发、专注于计算机相关专业毕业项目实战✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做,拉到文章底部即可看到个人VX。🍅 2023年 - 20…

4个维度讲透ChatGPT技术原理,揭开ChatGPT神秘技术黑盒!

4个维度讲透ChatGPT技术原理,揭开ChatGPT神秘技术黑盒! 3.1 提示学习3.2 上下文学习3.3 思维链4.1 拥抱变化4.2 定位清晰4.3 合规4.4 经验沉淀 ) 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题…

Python计算机Python二级知识点整理

1. 此时我们这里首先解析一下这个d[A]N,根据ASCII表,我们可以看出字符A对应的十进制数字是65,ord()函数是把字符转换为相对应的ASCII码,chr()函数是ord()函数的逆运算,所以ord("A")65 ,chr(65)A,题目中首先定义了d为一…

无涯教程-JavaScript - XIRR函数

描述 XIRR函数返回的现金Stream量表的内部收益率不一定是周期性的。要计算一系列定期现金Stream量的内部收益率,请使用IRR函数。 语法 XIRR (values, dates, [guess])争论 Argument描述Required/OptionalValues 与日期付款时间表相对应的一系列现金Stream量。 请参阅下面的…

1.centos7安装docker

本文目录: 1.docker 安装1.安装步骤2.安装是否成功校验3.docker加速配置4.hello world来袭,验证安装是否ok 2.卸载docker3.卸载较旧版本docker 使用docker必备的三个官方网站: docker官网:https://www.docker.com docker官方仓库&…

Java笔记:阻塞队列

1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常…

github一些有趣的使用场景和基本使用方法

文章目录 github的使用入门安装 Git创建 GitHub 帐户在本地设置 Git克隆仓库进行修改和提交推送更改拉取更新 删除Github上废弃的仓库注意 github更多有趣的使用场景协作和社交编程文档和知识库学习和教育自动化工作流程数据科学和可视化用来写blogGitHub PagesJekyllHexo第三方…