黑马程序员----关于死锁的问题
2014-08-20 15:56
162 查看
-------
android培训、java培训、期待与您交流! ---------
两个线程在运行的时候都在等待着对方的锁,这样便造成了程序的停滞。造成程序的假死现象。这种现象称为死锁。
实际的开发中不太可能出现,但是面试的时候有很大的概率会被问到死锁的问题。代码如下。
-------
android培训、java培训、期待与您交流! ---------
android培训、java培训、期待与您交流! ---------
两个线程在运行的时候都在等待着对方的锁,这样便造成了程序的停滞。造成程序的假死现象。这种现象称为死锁。
实际的开发中不太可能出现,但是面试的时候有很大的概率会被问到死锁的问题。代码如下。
<span style="font-size:14px;">package cn.itcast.thread; /* * 死锁的案例 */ class Dead implements Runnable{ private boolean flag; Dead(boolean flag){this.flag = flag;} public void run(){ while(true){ //如果flag = true线程进入A同步代码块,进B同步代码块 if(flag){ synchronized(LockA.locka){ System.out.println("if..locka"); //进B同步代码块 synchronized(LockB.lockb){ System.out.println("if..lockb"); } } }else{ //如果flag = false 线程进入B同步代码块,进入A同步代码块 synchronized(LockB.lockb){ System.out.println("else..lockb"); //进A同步代码块 synchronized(LockA.locka){ System.out.println("else..locka"); } } } } } } public class ThreadDemo5 { public static void main(String[] args) { Dead d1 = new Dead(true);//线程进入A代码块 Dead d2 = new Dead(false);//线程进入B代码块 Thread t1 = new Thread(d1); Thread t2 = new Thread(d2); t1.start(); t2.start(); } } //定义两个锁,A锁,B锁,唯一对象 class LockA{ public static final LockA locka = new LockA(); } class LockB{ public static final LockB lockb = new LockB(); }</span>
-------
android培训、java培训、期待与您交流! ---------
相关文章推荐
- 关于J2EE中死锁问题的研究(2)
- 关于J2EE中死锁问题的研究
- 关于线程死锁的问题
- 黑马程序员 关于c# windows窗体关闭时线程未能完全退出问题(专题一)
- 【黑马程序员】关于try和fianlly中的return执行问题总结
- 黑马程序员——java多线中的死锁问题
- 关于J2EE中死锁问题的研究
- 黑马程序员---关于内存分配问题
- 【MS】关于多线程的死锁问题
- 黑马程序员---关于使用dom4j写入数据时的乱码问题分析
- 关于Tomcat死锁的问题,在线求解
- 黑马程序员_还是关于多态的问题
- 关于J2EE中死锁问题的研究(1)
- 黑马程序员---关于访问控制符的问题:
- 关于waitForCondition导致死锁的问题
- 关于J2EE中死锁问题的研究(3)
- 关于oracle 锁机制锁问题的详细分析(处理锁定)以及死锁的解决方案
- 关于“ORA-00060:等待资源时检测到死锁”问题的分析
- 黑马程序员——java中关于单例设计模式和懒汉式多调用的问题
- 黑马程序员 C#关于字符串的截取问题