`

死锁的例子描述对吗

阅读更多
public class Deadlock {
	static class Friend {
		private final String name;

		public Friend(String name) {
			this.name = name;
		}

		public String getName() {
			return this.name;
		}

		public synchronized void bow(Friend bower) {
			System.out.format("%s: %s has bowed to me!%n", this.name, bower.getName());
			bower.bowBack(this);
		}

		public synchronized void bowBack(Friend bower) {
			System.out.format("%s: %s has bowed back to me!%n", this.name, bower.getName());
		}
	}

	public static void main(String[] args) {
		final Friend alphonse = new Friend("Alphonse");
		final Friend gaston = new Friend("Gaston");
		new Thread(new Runnable() {
			public void run() {
				alphonse.bow(gaston);
			}
		}).start();
		new Thread(new Runnable() {
			public void run() {
				gaston.bow(alphonse);
			}
		}).start();
	}
}

 

Deadlock describes a situation where two or more threads are blocked forever, waiting for each other. Here's an example.

Alphonse and Gaston are friends, and great believers in courtesy. A strict rule of courtesy is that when you bow to a friend, you must remain bowed until your friend has a chance to return the bow. Unfortunately, this rule does not account for the possibility that two friends might bow to each other at the same time. This example application, Deadlock , models this possibility:

 

http://java.sun.com/docs/books/tutorial/essential/concurrency/deadlock.html

 

礼仪的做法是你向对方鞠躬之后,你必须保持鞠躬姿势直到对方有机会向你回鞠躬

 

看打印描述,貌似

a.bow(b): 是b向a鞠躬

b.bowBack(a): 是a向b回鞠躬

 

我觉得更直观理解应该是:

a.bow(b): 是a向b鞠躬

b.bowBack(a): 是b向a回鞠躬

 

 

 

分享到:
评论

相关推荐

    数据库死锁案例

    描述数据库死锁的解决方法和预防措施,对于新人学习Oracle有很好的帮助

    哲学家就餐问题与死锁

    死锁是进程并发执行过程中可能出现的现象,哲学家就餐问题是描述死锁的经典例子。假设有几位哲学家围坐在一张餐桌旁,桌上有吃不尽的食品,每两位哲学家之间摆放着一根筷子,筷子的个数与哲学家的数量相等,每一位...

    Java面试-彻底搞懂死锁的前世今生

    写一个死锁的例子案例一:必然发生死锁案例二:两个账户转账案例三:多人多次转账发生死锁必须满足哪些条件如何定位死锁有哪些解决死锁问题的策略?线上发生死锁怎么办常见修复策略哲学家就餐问题问题描述代码演示...

    VHDL设计简单例程100例

    VHDL设计简单例程100例,简单入门VHDL语言100例 第1例 带控制端口的加法器 第2例 无控制端口的加法器 第3例 乘法器 第4例 比较器 第5例 二路选择器 第6例 寄存器 ...第39例 生成语句描述规则结构 第4

    VHDL 语言实例100 内含加法器控制器等100个代码例子

    带控制端口的加法器进程死锁 第55例 地址计数器 第56例 指令预读计数器 第78例ccAm2901四位微处理器的ALU输入 第79例ccAm2901四位微处理器的ALU 第80例ccAm2901四位微处理器的RAM 第99例 多周期指令的描述 第100例 ...

    sqlite3.30.1 数据库模块+支持库(彻底解决多线程死锁问题)-易语言

    要解决多线程问题,主要是对sqlite3的锁机制进行了解,和事务有密切的关系。本次更新的版本在开始事务时,增加了一个 事务锁状态 的参数。 拿简单的话来描述就是 开始事务 时如果 设置了 事务锁状态_ 立即 参数,...

    操作系统 银行家算法模拟实验(报告中附源码)

    2. 用高级语言编写和调试一个银行家算法程序,以加深对死锁的理解。 【实验准备】 1. 产生死锁的原因  竞争资源引起的死锁  进程推进顺序不当引起死锁 2.产生死锁的必要条件  互斥条件  请求和保持条件 ...

    《现代体系结构上的UNIX系统- 内核程序员的SMP和Caching技术》[DJVU]

    这一部分研究了这些多处理机给操作系统带来的问题,比如竞争条件上、死锁以及存储器操作的次序,而且考察了如何对UNIX内核进行调整使之适于在这样的系统上运行。本书最后一部分考察了高速缓存存储系统和多处理机之间...

    VHDL语言100例源码 VHDL学习资料VHDL 编程要点VHDL编程心得体会.zip

    100vhdl例子 VHDL 编程要注意问题.doc VHDL——按键消抖.doc VHDL电路简化.doc VHDL编程心得体会.pdf vhd开发的官方手册.pdf 第1例 带控制端口的加法器 第2例 无控制端口的加法器 第3例 乘法器 第4例 比较器 第5例 ...

    操作系统实验之银行家算法

    包含例子及相关代码 银行家算法 一,实验目的 1,掌握银行家安全性算法和资源请求算法的原理 2,掌握银行家算法的实现方法 二,基本概念 在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明...

    智能卡的状态机

    状态机是自动机的一种类型,自动机的例子是售货机,当投人一元硬币并揿动按钮,即可...这不仅对状态机的建模是有用的,也可用于研究所描述的系统的某些特性,其目的在于查明在操作时可能发生的死锁并保证对指令的处理

    sqlite3.30.1 数据库模块+支持库

    要解决多线程问题,主要是对sqlite3的锁机制进行了解,和事务有密切的关系。本次更新的版本在开始事务时,增加了一个 事务锁状态 的参数。拿简单的话来描述就是 开始事务 时如果。设置了 事务锁状态_ 立即 参数,...

    嵌入式实时操作系统small RTOS51原理及应用

    应用篇以DP-51单片综合仿真实验仪为硬件平台,通过对单片机常用和热门外围器件实用驱动程序的分析,详细介绍基于Small RTOS51的编程方法,以及如何为这些外围器件编写中间件,并给出一个完整的例子,让读者全面掌握...

    计算机组成与系统结构 第二次作业

    计算机组成与系统结 构计算机组成与系统结构 第二次作业的答案

    软件测试规范

    软件测试规范 目 录 一.概述 ...............................................................................................................................................................

    DelphiConcurrent:Delphi并发Anti-DeadLock MultiRead框架

    使用DelphiConcurrent可以检测到DEADLOCK并自动将其跳过-在发生之前-程序员有一个描述多线程问题的显式异常,而不是阻塞了DEADLOCK,该DEADLOCK冻结了没有输出日志的应用程序(如果链接的客户端会话也可能冻结该...

    易语言-sqlite3.30.1 数据库模块+支持库

    要解决多线程问题,主要是对sqlite3的锁机制进行了解,和事务有密切的关系。本次更新的版本在开始事务时,增加了一个 事务锁状态 的参数。 拿简单的话来描述就是 开始事务 时如果 设置了 事务锁状态_ 立即 参数,...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    类型 参数 描述 字符类型 char 1~2000字节 固定长度字符串,长度不够的用空格补充 varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number...

    net学习笔记及其他代码应用

    9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 答:不是。可以用任意类型。 10.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m [Page] 答: int Num = this.TextBox1.Text....

Global site tag (gtag.js) - Google Analytics