zoukankan      html  css  js  c++  java
  • 线程死锁

    线程死锁概念

    两个线程A/B,A线程掌握着实例1的锁,要访问实例2的synchronized方法,但是实例2的锁被B所掌握着,然而B这时候又要访问实例1的synchronized方法,两个线程一直等着对方释放实例1/实例2的锁,造成程序无法进行下去,这种现象称为线程访问的死锁

    代码示例

     1 package test;
     2 
     3 public class ThreadDeadLock {
     4 
     5     public static void main(String[] args) {
     6         Object a = new Object();
     7         Object b = new Object();
     8 
     9         MyThread1 t1 = new MyThread1(a, b);
    10         MyThread2 t2 = new MyThread2(a, b);
    11 
    12         t1.start();
    13         t2.start();
    14 
    15     }
    16 
    17 }
    18 
    19 class MyThread1 extends Thread {
    20     private Object a;
    21     private Object b;
    22 
    23     public MyThread1(Object a, Object b) {
    24         this.a = a;
    25         this.b = b;
    26     }
    27 
    28     @Override
    29     public void run() {
    30         synchronized (a) {
    31             try {
    32                 Thread.sleep(2000);
    33             } catch (Exception e) {
    34                 e.printStackTrace();
    35             }
    36 
    37             synchronized (b) {
    38 
    39             }
    40         }
    41     }
    42 }
    43 
    44 class MyThread2 extends Thread {
    45     private Object a;
    46     private Object b;
    47 
    48     public MyThread2(Object a, Object b) {
    49         this.a = a;
    50         this.b = b;
    51     }
    52 
    53     @Override
    54     public void run() {
    55 
    56         synchronized (b) {
    57 
    58             try {
    59                 Thread.sleep(2000);
    60             } catch (Exception e) {
    61                 e.printStackTrace();
    62             }
    63 
    64             synchronized (a) {
    65 
    66             }
    67         }
    68 
    69     }
    70 }
  • 相关阅读:
    codesmith
    moment.js
    select2
    Lodash js数据操作库
    angular.js
    vue.js
    axios.js
    RoutePrefix和Route 路由前缀
    Tuple元组 C#
    ningx访问日志切割
  • 原文地址:https://www.cnblogs.com/billmiao/p/9872207.html
Copyright © 2011-2022 走看看