怎么在Java中实现多线程死锁

今天就跟大家聊聊有关怎么在Java中实现多线程死锁,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

创新互联建站专注于西畴网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供西畴营销型网站建设,西畴网站制作、西畴网页设计、西畴网站官网定制、重庆小程序开发公司服务,打造西畴网络公司原创品牌,更为您提供西畴网站排名全网营销落地服务。

Java的优点是什么

1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是面向网络的语言;4. 鲁棒性,java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。;5. 安全性,用于网络、分布环境下的Java必须防止病毒的入侵。6. 体系结构中立,只要安装了Java运行时系统,就可在任意处理器上运行。7. 可移植性,Java可以方便地移植到网络上的不同机器。8.解释执行,Java解释器直接对Java字节码进行解释执行。

具体如下:

package com.damlab.fz;
public class DeadLock {
  public static void main(String[] args) {
    Resource r1 = new Resource();
    Resource r2 = new Resource();
    // 每个线程都拥有r1,r2两个对象
    Thread myTh2 = new MyThread1(r1, r2);
    Thread myTh3 = new MyThread2(r1, r2);
    myTh2.start();
    myTh3.start();
  }
}
class Resource {
  private int i;
}
class MyThread1 extends Thread {
  private Resource r1, r2;
  public MyThread1(Resource r1, Resource r2) {
    this.r1 = r1;
    this.r2 = r2;
  }
  @Override
  public void run() {
    while (true) {
      // 先获得r1的锁,再获得r2的锁
      synchronized (r1) {
        System.out.println("1号线程获取了r1的锁");
        synchronized (r2) {
          System.out.println("1号线程获取了r2的锁");
        }
      }
    }
  }
}
class MyThread2 extends Thread {
  private Resource r1, r2;
  public MyThread2(Resource r1, Resource r2) {
    this.r1 = r1;
    this.r2 = r2;
  }
  @Override
  public void run() {
    while (true) {
      // 先获得r2的锁,再获得r1的锁
      synchronized (r2) {
        System.out.println("2号线程获取了r2的锁");
        synchronized (r1) {
          System.out.println("2号线程获取了r1的锁");
        }
      }
    }
  }
}

运行结果:

怎么在Java中实现多线程死锁

看完上述内容,你们对怎么在Java中实现多线程死锁有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


文章题目:怎么在Java中实现多线程死锁
本文来源:http://hbruida.cn/article/podcih.html