java死锁_Java死锁原理,手写死锁,解决死锁
死锁:多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能进行,而导致两个或者多个线程都在等在对方释放资源。
都停止的情形。某一个同步块同时拥有两个以上对象的锁时,就会产生死锁问题。
手写一个死锁
package courrent.deadlock;
public class DeadLock {
public static void main(String[] args) {
Markup g1=new Markup(1,"丫头");
Markup g2=new Markup(0,"小红");
g1.start();
g2.start();
}
}
//口红
class Lipstick{
}
//镜子
class Mirror{}
//化妆
class Markup extends Thread{
static Lipstick lipstick=new Lipstick();
static Mirror mirror=new Mirror();
//选择
int choice;
String girl;
public Markup(int choice,String girl){
this.choice=choice;
this.girl=girl;
}
@Override
public void run() {
super.run();
makeup();
}
//相互持有对方的对象锁,才有可能造成死锁
private void makeup(){
if(choice==0){
synchronized (lipstick){
//获得口红的锁
System.out.println(this.girl+"涂口红");
//1秒后想拥有镜子
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (mirror){
System.out.println(this.girl+"照镜子");
}
}
}else{
synchronized (mirror){
//获得镜子的锁
System.out.println(this.girl+"照镜子");
//2秒后想拥有口红
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lipstick){
System.out.println(this.girl+"涂口红");
}
}
}
}
}
解决死锁方案,资源排序,加锁时限,死锁检测。
java死锁_Java死锁原理,手写死锁,解决死锁相关推荐
- python 反卷积(DeConv) tensorflow反卷积(DeConv)(实现原理+手写)
Tensorflow反卷积(DeConv)实现原理+手写python代码实现反卷积(DeConv) 理解: https://www.zhihu.com/question/43609045/answer ...
- 使用java语言基于SMTP协议手写邮件客户端
使用java语言基于SMTP协议手写邮件客户端 1. 说明 电子邮件是互联网上常见的应用,他是互联网早期的产品,直至今日依然受到广大用户的喜爱(在中国可能因为文化背景不同,电子邮件只在办公的时候常用) ...
- java程序填空题输出汤姆猫_Java学习之手写Tomcat“迷你汤姆猫”
之前学习Java EE的时候,做的项目都是部署在Tomcat上面,配置web.xml(小毛驴),然后启动Tomcat,通过浏览器输入URL去访问,当时其实真的不懂好多东西,尤其是不懂request.和 ...
- instanceof原理--手写代码实现
手写instanceof 首先在写之前要先理解一下instanceof的实现原理: instanceof 主要的实现原理就是只要右边变量的prototype在左边变量的原型链上即可(也就是说左边的变量 ...
- 【Vue源码】mustache模板引擎 - 基本使用 - 底层原理 - 手写实现
文章目录 1. 模板引擎的介绍 1.1 模板引擎是什么? 1.2 模板引擎是怎么来的?(发展历史) 1. 使用原生的DOM操作 2. 使用数组中的join方法 3. 使用ES6反引号的方法 2. mu ...
- Mobx原理: 手写mobx
手写状态管理库: Mobx mobx是一个状态管理库,类似于redux或者vuex完成状态观察相应相关的处理.mobx使得状态管理更加的简单和透明.由于这篇文章时mobx原理解析,所以关于mobx的使 ...
- Tensorflow反卷积(DeConv)实现原理+手写python代码实现反卷积(DeConv)
最近看到一个巨牛的人工智能教程,分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.平时碎片时间可以当小说看,[点这里可以去膜拜一下大神的" ...
- 剖析Dva原理: 手写Dva
关于Dva: dva 是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的 ...
- 面试官:手写一个必然死锁的例子?一顿操作猛如虎。。
来源:blog.csdn.net/xiewenfeng520/article/details/107230996 前言 只对死锁代码感兴趣的可以直接跳到第三小节 必然死锁示例,如果对死锁还不太了解的, ...
- java线程同步的死锁_Java基础之线程5-线程同步死锁
死锁:线程之间因条件相互竞争,导致线程都不能正常执行完,从而产生了死锁. 死锁的例子: public class TestDeadLock implements Runnable { public i ...
最新文章
- 第二课.C++基础语法
- 安卓高手之路之ClassLoader(总结篇)
- IPython 8.0大版本更新:Debug报错提示更清晰,加入自动代码补全
- 了解大数据在人力资源和薪资中的作用
- 测试公众号修改名称_微信公众号开通个人认证,只需三步
- centos7挂载nas存储_Geeki说丨浅谈几种存储添加主机映射方式
- 定期定量采购_?采购计划员必备:各种物料采购计划与订单制定的技巧与方法...
- 最近学到一些linq和面向对象的经验分享
- Filter过滤敏感词汇
- 怎样培养数据分析的能力
- 网站账号中密码的加密方式
- RFM、PSM、波士顿矩阵模型简介
- 网络逻辑漏洞、SQLMAP、Nmap及其它命令的使用方法
- kali无线破解实战
- 这个母亲节,带妈妈一起学习网络防骗术
- 进店率、提袋率、客单价
- SQL——数据定义DDL
- spring cloud 快速上手系列 -> 02-配置中心 Config -> 022-Config客户端
- Kelvin四线连接电阻测试技术及应用
- 针对异常java.lang.IllegalStateException onMeasure() did not set the measured dimension解决方法
热门文章
- 互动性可视化,打通大数据最后一公里
- 2021-09-06meituan-003.小美的跑腿代购
- Unicode字符集和多字节字符集关系(一)
- 关于Cisco Packet Tracer三层交换机路由配置
- java stream closed_java.io.IOException: Stream closed
- 电脑提示找不到msvcr100.dll的解决方法-msvcr100.dll丢失怎样修复
- mysql max 获取另外值_来看看 MySQL 的这个 BUG,坑了多少人....
- css面包屑导航_在CSS3中编写优美的面包屑导航菜单
- 雷神之锤暴力压缩算法
- LLVM学习笔记(43)