黑马程序员技术交流社区
标题:
关于多线程中死锁的问题。
[打印本页]
作者:
郭旭辉
时间:
2014-8-20 15:56
标题:
关于多线程中死锁的问题。
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();
}
复制代码
.死锁
多线程在争抢同一把锁的时候,造成的程序的假死现象。实际的开发中不可能出现,但是面试的时候很大的概率会遇到这样的问题。而且需要手写代码出来。给大家分享下关于死锁的代码。希望能够让大家有个印象。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2