怎么在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中实现多线程死锁-创新互联
文章URL:http://ybzwz.com/article/ddhpjo.html