• 多线程之:死锁


    死锁指两个或者多个线程持有锁的同时并等待对方持有的锁,导致无限期等待的情况,通常发生于以不同顺序请求同一组锁。

    两个线程以不同顺序获取一组锁会导致死锁,如:

     1 public class DeadLockTest {
     2 
     3     public static class LockGroup{
     4         private  Object objA=new Object();
     5         private  Object objB=new Object();
     6         public  Object getObjA() {
     7             return objA;
     8         }
     9         public Object getObjB() {
    10             return objB;
    11         }
    12         
    13     }
    14     
    15     public static void main(String[] args) throws Exception {
    16         final LockGroup group=new LockGroup();
    17         Thread threadA=new Thread(new  Runnable() {
    18             public void run() {
    19                 synchronized (group.getObjA()) {
    20                     System.out.println("try to get lockb......");
    21                     synchronized (group.getObjB()) {
    22                         System.out.println("get all locks now......");
    23                     }
    24                 }
    25             }
    26         });
    27         Thread threadB=new Thread(new  Runnable() {
    28             public void run() {
    29                 synchronized (group.getObjB()) {
    30                     System.out.println("try to get locka......");
    31                     synchronized (group.getObjA()) {
    32                         System.out.println("get all locks now......");
    33                     }
    34                 }
    35             }
    36         });
    37         threadA.start();
    38         threadB.start();
    39         threadA.join();
    40         threadB.join();//将会发生死锁
    41     }
    42 }
    作者:jessezeng
    出处:http://www.cnblogs.com/jessezeng/
  • 相关阅读:
    图灵测试
    百度面试题
    【javascript每日一练】- 插入排序
    各种排序讲解
    【javascript每日一练】- 多维数组
    不用JQuery,原生Javascript实现Ajax功能及相关知识点
    【javascript每日一练】- 无序数组排序
    前端面试题
    前端重构面试题
    面试题
  • 原文地址:https://www.cnblogs.com/jessezeng/p/5005753.html
Copyright © 2020-2023  润新知