中职省级示范校建设网站百度快速收录seo工具软件

news/2025/9/23 20:38:19/文章来源:
中职省级示范校建设网站,百度快速收录seo工具软件,网页美工设计简单流程,平面设计包括哪些软件文章目录 1. 认识线程死锁2. 如何避免线程死锁? 1. 认识线程死锁 线程死锁描述的是这样一种情况#xff1a;多个线程同时被阻塞#xff0c;它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞#xff0c;因此程序不可能正常终止。 如下图所示#xff… 文章目录 1. 认识线程死锁2. 如何避免线程死锁? 1. 认识线程死锁 线程死锁描述的是这样一种情况多个线程同时被阻塞它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞因此程序不可能正常终止。 如下图所示线程 A 持有资源 2线程 B 持有资源 1他们同时都想申请对方的资源所以这两个线程就会互相等待而进入死锁状态。 下面通过一个例子来说明线程死锁,代码模拟了上图的死锁的情况 (代码来源于《并发编程之美》) public class DeadLockDemo {private static Object resource1 new Object();//资源 1private static Object resource2 new Object();//资源 2public static void main(String[] args) {new Thread(() - {synchronized (resource1) {System.out.println(Thread.currentThread() get resource1);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread() waiting get resource2);synchronized (resource2) {System.out.println(Thread.currentThread() get resource2);}}}, 线程 1).start();new Thread(() - {synchronized (resource2) {System.out.println(Thread.currentThread() get resource2);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread() waiting get resource1);synchronized (resource1) {System.out.println(Thread.currentThread() get resource1);}}}, 线程 2).start();} }Output Thread[线程 1,5,main]get resource1 Thread[线程 2,5,main]get resource2 Thread[线程 1,5,main]waiting get resource2 Thread[线程 2,5,main]waiting get resource1线程 A 通过 synchronized (resource1) 获得 resource1 的监视器锁然后通过Thread.sleep(1000);让线程 A 休眠 1s 为的是让线程 B 得到执行然后获取到 resource2 的监视器锁。线程 A 和线程 B 休眠结束了都开始企图请求获取对方的资源然后这两个线程就会陷入互相等待的状态这也就产生了死锁。上面的例子符合产生死锁的四个必要条件。 学过操作系统的朋友都知道产生死锁必须具备以下四个条件 互斥条件该资源任意一个时刻只由一个线程占用。请求与保持条件一个进程因请求资源而阻塞时对已获得的资源保持不放。不剥夺条件:线程已获得的资源在未使用完之前不能被其他线程强行剥夺只有自己使用完毕后才释放资源。循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 2. 如何避免线程死锁? 我上面说了产生死锁的四个必要条件为了避免死锁我们只要破坏产生死锁的四个条件中的其中一个就可以了。现在我们来挨个分析一下 破坏互斥条件 这个条件我们没有办法破坏因为我们用锁本来就是想让他们互斥的临界资源需要互斥访问。破坏请求与保持条件 一次性申请所有的资源。破坏不剥夺条件 占用部分资源的线程进一步申请其他资源时如果申请不到可以主动释放它占有的资源。破坏循环等待条件 靠按序申请资源来预防。按某一顺序申请资源释放资源则反序释放。破坏循环等待条件。 我们对线程 2 的代码修改成下面这样就不会产生死锁了。 new Thread(() - {synchronized (resource1) {System.out.println(Thread.currentThread() get resource1);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread() waiting get resource2);synchronized (resource2) {System.out.println(Thread.currentThread() get resource2);}}}, 线程 2).start();Output Thread[线程 1,5,main]get resource1 Thread[线程 1,5,main]waiting get resource2 Thread[线程 1,5,main]get resource2 Thread[线程 2,5,main]get resource1 Thread[线程 2,5,main]waiting get resource2 Thread[线程 2,5,main]get resource2Process finished with exit code 0我们分析一下上面的代码为什么避免了死锁的发生? 线程 1 首先获得到 resource1 的监视器锁,这时候线程 2 就获取不到了。然后线程 1 再去获取 resource2 的监视器锁可以获取到。然后线程 1 释放了对 resource1、resource2 的监视器锁的占用线程 2 获取到就可以执行了。这样就破坏了破坏循环等待条件因此避免了死锁。

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

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

相关文章

2025.9.23

今天早八去科技楼上工程实训课,主要是电工技能,比如学习万用表测电笔的使用以及体验安全电流穿过人体的感觉。然后写实验报告记录过程和感想。下课后去勒泰中心5楼吃了自助烤肉两个小时,还是烤肉,火鸡面,薯条,桂…

软件工程学习日志2025.9.23

我的 HBase 故障排查日记:从绝望到成功的一天 今天是我与 HBase 斗争的一天,也是一次从挫折到突破的技术之旅。早上当我尝试启动 HBase 时,遭遇了一系列令人困惑的问题,最终通过系统性的排查找到了解决方案。 问题…

长春免费网站制作百度网盘app下载安装电脑版

写在开头FreeSql 是 .NET 开源生态下的 ORM 轮子,转眼快两年了,说真的开源不容易(只有经历过才明白)。今天带点干货和湿货给大家,先说下湿货。认识我的人,知道 CSRedisCore 是我写的另外一个开源组件&#…

dede网站文章同步网站开发和网络工程师

会员经济俨然成为消费领域的“香饽饽”。 听歌、看视频、购物甚至出行,三百六十行,行行有会员。 本质上,“会员”是商家与消费者之间的“信任关系”,消费者愿意相信商家会让渡更多实惠与便利;商家则希望通过让利换取…

电信网站备案流程图wordpress 来必力

1 迭代Iteration 迭代Iteration:所谓迭代就是重复运行一段代码语句块的能力,就好比在一个容器中进行一层一层遍历数据,在应用过程中for循环最为突出。迭代就是从某个容器对象中逐个地读取元素,直到容器中没有元素为止。迭代迭代&…

做网站要学会什么软件微信头像定制软件

Static修饰成员变量 Static是什么 叫静态,可以修饰成员变量,成员方法 成员变量按有无static修饰分俩种: 类变量:有static修饰,属于类,在计算机里只有一份,会被类的全部对…

网站建设家乡网页设计模板零元创业加盟网

作者:CSDN @ _养乐多_ 本博客将向您介绍如何使用Google Earth Engine(GEE)平台来处理Landsat 5、7和8的卫星图像数据,计算NDVI的斜率和截距,以及如何导出这些结果供进一步分析使用。 文章目录 一、代码详解1.1 核心代码详解1.2 核心代码详解1.3 代码框架介绍二、完整代码…

江门搜狗网站推广优化html5 图片网站

2019独角兽企业重金招聘Python工程师标准>>> Spring Boot对于如何使用Spring构建应用程序有一个看法:例如它具有常规配置文件的常规位置,以及用于常见管理和监视任务的端点。Spring Cloud建立在此之上,并添加了一些可能系统中所有…

已收录的网站不好优化白云区江夏附近做网站

前言 项目进行到新的一个迭代了,赶了1周需求,接口终于处理完了。分享记录下迭代中处理导入、导出、下载模版功能的细节吧。 一、场景 EasyExcel(阿里)实现Excel数据处理三层表头,第二、三层表头动态数据根据第二、三层…

辽阳网站建设辽阳登录建设部网站

注:本博文代码基于ZRender 3.4.3版本开发,对应版本库地址:ZRender 库。 效果 实现分析 通过上面显示的效果图,可以看出,这种效果就是在Canvas中生成多个可移动的点,然后根据点之间的距离来确定是否连线&am…

平面设计网站有哪些比较好的中山外发加工网

需要用上插件:axupimgs插件作者:莫若卿支持版本:5.0.4支持语言:仅中文插件版本:1.6一、axupimgs 插件作用:这是一个tinymce多图片批量上传插件,支持拖拽文件添加,拖拽支持白名单&…

免费站推广网站2022php做门户网站

目录 1. 前言 2. 实验分析 2.1 导入包 2.2 决策树模型构建及树模型的可视化展示 2.3 概率估计 2.4 绘制决策边界 2.5 决策树的正则化(剪枝) 2.6 对数据敏感 2.7 回归任务 2.8 对比树的深度对结果的影响 2.9 剪枝 1. 前言 本文主要分析了决策树的分类和回…

markdown 使用指南

数学公式 分数 \frac{x+y}{2} 效果:\(\frac{x+y}{2}\) 求和 \sum_{x}^{n} \(\sum_{x}^{n}\) 积分 \int \(\int\)

第6.2节 Android Agent制作<三>

第6.2节 Android Agent制作<三>pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&q…

专业外贸网站制作价格网络商城需要什么资质

Jenkins如何创建管理员用户? 接上一篇:企业实战04_Jenkins安装推荐插件https://blog.csdn.net/weixin_40816738/article/details/90383700 文章目录1. 创建管理员用户2. 请求地址Windows和Linux2.1. Windows的浏览器访问地址:2.2. Linux的浏览…

...温岭做网站企业宣传ppt案例欣赏

非原创,来源网络。感谢原作者奉献如此精彩文章。原文地址:http://www.jianbitou.com/post/20_websites-learn-master-css.html1. A List Apart CSS Topics A List Apart是一个CSS优秀文章的收集网站,从1999年开始收集文章,关注最佳…

中国建材工程建设协会网站网站建设课程设计心得

support-v4.jar是support library。路径为<sdk>/extras/android/support/v4/android-support-v4.jar.转载于:https://www.cnblogs.com/Magina-learning/p/7899788.html

建设厅网站初始数据入库html5 门户网站模版

选择编程语言需要考虑多个方面&#xff0c;包括语言的特性、社区支持、工作机会、学习曲线等。下面是关于Python Go和Rust的一些介绍。 1.基本语法 1. Python: Python 是一种脚本语言&#xff0c;以简洁、易读的语法著称。以下是 Python 的基本语法示例&#xff1a; # Hello…

做网站的大小wordpress如何去除分类

箭头函数是 es6 提出的this 指针指向 定义箭头函数的全局上下文或函数上下文&#xff0c;是固定的call\apply\bind无法改变箭头函数的this没有 arguments 对象&#xff0c;但是可以访问外部作用域中的 arguments 对象没有 prototype 属性不能用作 generator 函数&#xff0c;不…

珠海市手机网站建设公司WordPress众筹模板

文章目录 程序安全退出执行代码的基本:信号拦截执行代码的改进:信号拦截包装器实践捕获键盘输入示例代码go-svc介绍程序及服务的控制是指在计算机系统中对程序和服务进行管理、监控和调控的过程。这个过程可以涉及到多个方面,包括资源管理、运行状态监测、安全性控制等。本质…