A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯大卫 中级黑马   /  2014-9-2 00:42  /  603 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. public class DeadLock implements Runnable {
  2.         Object locka=new Object();
  3.         Object lockb=new Object();
  4.         @Override
  5.         public void run() {
  6.         while(true){
  7.                 synchronized (locka) {
  8.                         System.out.println("11locka");
  9.                         synchronized (lockb) {
  10.                                 System.out.println("11lockb");
  11.                         }
  12.                 }
  13.                 synchronized (lockb) {
  14.                 System.out.println("22lockb");
  15.                 synchronized (locka) {
  16.                         System.out.println("22locka");
  17.                 }
  18.                 }
  19.         }

  20.         }
  21. }

  22. public class Test {

  23.         public static void main(String[] args) {
  24.                 DeadLock dk=new DeadLock();
  25.                 Thread t1=new Thread(dk,"aa");
  26.                 Thread t2=new Thread(dk,"bb");
  27.                 t1.start();
  28.                 t2.start();        
  29.         }
  30. }
  31. 这样也可以死锁,但是在while里面线程为什么可以直接去走第二个锁
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马