package multiThread; /* * 死锁:死锁描述了这样一种情景,两个或多个线程永久阻塞,互相等待对方释放资源。 * 当DeadLock运行后,两个线程极有可能阻塞,当它们尝试调用bowBack方法时。 * 没有哪个阻塞会结束,因为每个线程都在等待另一个线程退出bow方法。 */ public class DeadLock { public static void main(String[] args){ final Person person1 = new DeadLock().new Person("jihaibo"); final Person person2 = new DeadLock().new Person("zhangxiaoyan"); Thread thread1 = new Thread(new Runnable(){ @Override public void run() { person1.bow(person2); /*while(true){ try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } person1.bow(person2); }*/ } }); Thread thread2 = new Thread(new Runnable(){ @Override public void run() { person2.bow(person1); /*while(true){ try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } person2.bow(person1); }*/ } }); thread1.start(); /*try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ thread2.start(); } class Person { String name; public Person(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public synchronized void bow(Person friend){ System.out.println(name + "给" + friend.getName() + "鞠躬"); friend.bowBack(this); } public synchronized void bowBack(Person friend){ System.out.println(friend.getName() + "给" + name + "回敬鞠躬"); } } }
相关推荐
java线程实践,了解线程死锁,同步问题
死锁避免——银行家算法的模拟实现 java源代码 java源代码 java源代码 java源代码 java源代码
银行家避免死锁算法模拟实现Java版,SCNU计本同学严禁完全COPY,谢谢合作!
仿真模拟银行家算法对死锁的避免
主要介绍了Java模拟死锁发生之演绎哲学家进餐问题,结合具体演绎哲学家进餐问题的案例形式详细分析了死锁机制与原理,需要的朋友可以参考下
(1) 设计一个3个并发进程共享3类不同资源的系统,进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。 (2) 设计用银行家算法和随机分配算法,实现资源分配的两个资源分配程序,应具有显示或打印各...
春节的时候去面试了一家公司,笔试题里面有一道是使用简单的代码实现线程的‘死锁’,当时没有想到这道题考的是Synchronized关键字,于是自己定义了两个资源模拟了一下。后面想想肠子都悔青了,于是自己在电脑上...
很好用,很容易看明白,通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁地发生。
1、 对死锁避免中的银行家算法作进一步理解。 2、 加深理解死锁的概念。 3、 加深理解安全序列和安全状态的概念。 4、 通过编程,掌握银行家算法分配资源的一步步实现过程。
完整的银行家算法 java 实现 完整的银行家算法 java 实现 完整的银行家算法 java 实现
以下是Java编程模拟银行家算法的源代码,它包含了完整的实现,并且有详细的注释,非常适合作为实验报告的源代码使用。这段代码可以帮助大家理解银行家算法的原理和实现细节,以及如何在Java中实现这一算法。通过阅读...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...
java线程 死锁 锁机制,java模拟生产者与消费者
不考虑死锁。 设备使用完后立即释放该设备资源。 7.存储管理 用链表模拟内存空间分配表。 系统区存放进程控制块和内存分配表。 用户区存放可执行文件。 8.进程管理 首先随机创建 10 个可执行文件来进行调度。 采用...
JAVA实现的银行家算法模拟,用于了解死锁避免
桂林理工大学操作系统实习,关于死锁的哲学家进餐问题,演示系统 , java写的,多线程,有图形界面。 桂林理工大学的就来吧,哈哈 ,附带实验报告
提供了多种死锁检测和模拟的功能,如输入和输出系统的资源分配表,判断系统的状态是否安全,模拟系统的资源分配和回收过程,显示系统的安全序列等。本资源适合操作系统实践者和工程师使用,帮助他们通过Web界面来...
下面小编就为大家带来一篇java多线程学习之死锁的模拟和避免(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
当一组进程请求当前正被保留/分配给某些其他进程的相同资源时,就会发生死锁情况。 处于死锁状态的进程将等待大量时间,并且它们将永远不会终止其执行,并且该组... Java编程语言用于开发我们在本文中介绍的所有算法。