- 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();
 
 - }
 
  复制代码 .死锁 
  多线程在争抢同一把锁的时候,造成的程序的假死现象。实际的开发中不可能出现,但是面试的时候很大的概率会遇到这样的问题。而且需要手写代码出来。给大家分享下关于死锁的代码。希望能够让大家有个印象。 
 
 
 
 |