黑马程序员技术交流社区

标题: 有谁能给个短小精悍的死锁小程序,记不住啊? [打印本页]

作者: 旭辉lin    时间: 2014-9-3 16:38
标题: 有谁能给个短小精悍的死锁小程序,记不住啊?
本帖最后由 旭辉lin 于 2014-9-4 09:30 编辑

死锁小程序!记下来,以后也好应对面试。

作者: xiayoutianxia    时间: 2014-9-3 20:31
毕老师的视频里有啊,你要嫌长就百度一个
作者: 旭辉lin    时间: 2014-9-4 09:29
  1. public class Sisuo implements Runnable {
  2.         Object obj1 = new Object();
  3.         Object obj2 = new Object();

  4.         @Override
  5.         public void run() {
  6.                 if (Thread.currentThread().getName().equals("t1")) {
  7.                         while (true) {
  8.                                 synchronized (obj1) {
  9.                                         System.out.println("线程t1锁定obj1");
  10.                                         synchronized (obj2) {
  11.                                                 System.out.println("线程t1锁定obj2");
  12.                                         }
  13.                                 }
  14.                         }
  15.                 } else {
  16.                         while (true) {
  17.                                 synchronized (obj2) {
  18.                                         System.out.println("线程t2锁定obj2");
  19.                                         synchronized (obj1) {
  20.                                                 System.out.println("线程t2锁定obj1");
  21.                                         }
  22.                                 }
  23.                         }
  24.                 }
  25.         }

  26.         public static void main(String[] args) {
  27.                 Sisuo sisuo=new Sisuo();
  28.                 Thread t1 = new Thread(sisuo, "t1");
  29.                 Thread t2 = new Thread(sisuo, "t2");
  30.                 t1.start();
  31.                 t2.start();
  32.         }
  33. }
复制代码

作者: 喜爱    时间: 2014-9-4 09:51
循环中嵌套循环就会出现死锁
作者: Mokill0911    时间: 2014-9-4 16:56
  1. class Deadlock implements Runnable
  2. {
  3.         private boolean flag;
  4.         Deadlock(boolean flag)
  5.         {
  6.                 this.flag= flag;
  7.         }

  8.         public void run()
  9.         {
  10.                 if(flag)
  11.                 {
  12.                         synchronized(Mylock.locka)
  13.                         {
  14.                                 System.out.println("if...locka..");
  15.                                 synchronized(Mylock.lockb)      
  16.                                 {
  17.                                         System.out.println("if...lockb..");
  18.                                 }
  19.                         }
  20.                 }

  21.                 else
  22.                 {
  23.                         synchronized(Mylock.lockb)
  24.                         {
  25.                                 System.out.println("else...lockb..");
  26.                                 synchronized(Mylock.locka)      
  27.                                 {
  28.                                         System.out.println("else...locka..");
  29.                                 }
  30.                         }
  31.                
  32.                 }
  33.         }
  34. }

  35. class Mylock
  36. {
  37.         static Object locka= new Object();
  38.         static Object lockb= new Object();
  39.         
  40. }


  41. class DeadlockTest
  42. {
  43.         public static void main(String[] args)
  44.         {
  45.                 Deadlock lock_1=new Deadlock(true);
  46.                 Deadlock lock_2=new Deadlock(false);


  47.                 Thread t1= new Thread(lock_1);
  48.                 Thread t2= new Thread(lock_2);

  49.                 t1.start();
  50.                 t2.start();
  51.         }
  52. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2