黑马程序员_线程死锁
2013-03-23 22:12
176 查看
------- android培训、java培训、期待与您交流! ----------
也就是有两个房子,A和B,主人A 拿着B房间的锁,B主人拿着A房间的锁,A拿不到B的锁,就进不去房间
而B拿不到A的锁,也进不去房间,两人相持不下
死锁属于操作系统的概念了……其实很好理解。最经典的例子就是,You first,You first问题。
一个门,两个“中国人”,都很有礼貌,走碰头了,都想过这个门,两个人都谦让对方先过,结果是,谁也过不去……。
还有就是哲学家问题!说是四个哲学家坐在桌子上等着吃饭,每个人一边一根筷子,四个人四根筷子。
一个人拿到两根筷子的时候才能吃。否则等待…… ,有一种情况就是,四个人,每个人都拿了一根筷子,
还没有人放手。结果四个人都饿死……
死锁
同步中嵌套同步也就是有两个房子,A和B,主人A 拿着B房间的锁,B主人拿着A房间的锁,A拿不到B的锁,就进不去房间
而B拿不到A的锁,也进不去房间,两人相持不下
死锁属于操作系统的概念了……其实很好理解。最经典的例子就是,You first,You first问题。
一个门,两个“中国人”,都很有礼貌,走碰头了,都想过这个门,两个人都谦让对方先过,结果是,谁也过不去……。
还有就是哲学家问题!说是四个哲学家坐在桌子上等着吃饭,每个人一边一根筷子,四个人四根筷子。
一个人拿到两根筷子的时候才能吃。否则等待…… ,有一种情况就是,四个人,每个人都拿了一根筷子,
还没有人放手。结果四个人都饿死……
class Lock implements Runnable { private boolean flag; public Lock(boolean flag) { this.flag=flag; } public void run() { if(flag) { while(true) { synchronized(MyLock.locka) //a锁中嵌套 b锁 { System.out.println("if locka"); synchronized(MyLock.lockb) { System.out.println("if lockb"); } } } } else { while(true) { synchronized(MyLock.lockb) //b 锁中嵌套a锁 { System.out.println("else lockb"); synchronized(MyLock.locka) { System.out.println("MyLock.locka"); } } } } } } class MyLock { static Object locka=new Object(); static Object lockb=new Object(); } public class LockDemo { public static void main(String[] args) { Thread lock1=new Thread(new Lock(false)); Thread lock2=new Thread(new Lock(true)); lock1.start(); lock2.start(); }
相关文章推荐
- 黑马程序员_多线程技术_(线程的创建 Thread和Runnable、死锁、线程间通信、join、yield)
- 黑马程序员——java第十一、十二天:多线程(创建线程1-2、多线程同步代码、实现Runnable接口、安全死锁)
- 黑马程序员------多线程(No.2)(死锁、线程间通信、生产者消费者问题)
- 黑马程序员_Java基础_线程基础,创建,同步(单例设计模式的同步),死锁
- 黑马程序员-19-java基础-多线程(2)-死锁与线程间通信(synchronized与Lock的区别及各自用法)
- 黑马程序员--读写字节数组,随机读写流,集合IO的思维导图,多线程部分,单例设计模式,线程和进程的概念,Java中的线程的创建方式,线程的随机性,线程的状态图,多线程操作共享数据的安全性,死锁
- 黑马程序员-Java 多线程(二)-线程的同步、死锁、Lock接口
- 黑马程序员_多线程技术(线程的创建Thread和Runnble,死锁,线程间通信,join,yield)
- 黑马程序员---2015.6.18笔记---线程--死锁
- java线程死锁的检测方法
- 黑马程序员- 第十天(线程)
- 一个 pthread_cancel 引起的线程死锁
- 事件对象,临界区对象,线程死锁
- 黑马程序员---线程间通讯
- C++11线程指南(8)--死锁
- 黑马程序员学习笔记——同步线程
- 黑马程序员---Java的进程和线程
- 黑马程序员——总结下线程学习中的wait(),notify()的用法。
- 多线程专题之线程死锁原因之谜
- 黑马程序员--.Net学习日记——线程