Java 线程死锁的问题解决办法

发布时间 - 2026-01-11 03:24:26    点击率:

 Java 线程死锁的问题解决办法

【线程死锁】 

原因:两个线程相互等待被对方锁定的资源

代码模拟:

public class DeadLock {
  public static void main(String[] args) {
    Object obj = new Object();
    Object obj1 = new Object();
    DeadLockThread1 D1 = new DeadLockThread1(obj, obj1);
    DeadLockThread2 D2 = new DeadLockThread2(obj, obj1);
    new Thread(D1,"线程1").start();
    new Thread(D2,"线程2").start();
  }
}

class DeadLockThread1 implements Runnable {
  private Object obj;
  private Object obj1;

  public DeadLockThread1(Object obj, Object obj1) {
    this.obj = obj;
    this.obj1 = obj1;
  }

  @Override
  public void run() {
    synchronized (obj) {   //DeadLockThread1锁定obj对象
      try {
        Thread.sleep(1000);
        synchronized (obj1) { //等待锁定obj1对象,obj对象已被DeadLockThread2锁定
          obj1.getClass();
        }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}

class DeadLockThread2 implements Runnable {
  private Object obj;
  private Object obj1;

  public DeadLockThread2(Object obj, Object obj1) {
    this.obj = obj;
    this.obj1 = obj1;
  }

  @Override
  public void run() {
    synchronized (obj1) {   //DeadLockThread2锁定obj2对象
      try {
        Thread.sleep(1000);
        synchronized (obj) { //等待锁定obj对象,obj对象已被DeadLockThread1锁定
          obj.getClass();
        }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}

查看方式:

1、【cmd】下输入【jconsole】

2、选择测试线程并点击右下角【连接】,左上角选择【线程】,左下角选择【检测死锁】

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望通过本文能帮助到大家,谢谢大家对本站的支持!


# Java  # 线程死锁  # 线程死锁的实例详解  # java实现死锁的示例代码  # Java 解决死锁的方法实例详解  # Java多线程产生死锁的必要条件  # java 多线程死锁详解及简单实例  # java中常见的死锁以及解决方法代码  # Java线程死锁实例及解决方法  # Java中死锁产生的原因有哪些?  # java避免死锁的常见方法代码解析  # java线程死锁代码示例  # Java中死锁问题及解决方法  # 死锁  # 已被  # 如有  # 谢谢大家  # 解决办法  # 疑问请  # void  # main  # DeadLock  # static  # Object  # obj  # String  # args  # br  # strong  # nbsp  # pre 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  如何在自有机房高效搭建专业网站?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何在腾讯云服务器快速搭建个人网站?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  如何在Windows 2008云服务器安全搭建网站?  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel如何使用Blade组件和插槽?(Component代码示例)  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel怎么清理缓存_Laravel optimize clear命令详解  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  Laravel如何使用Gate和Policy进行授权?(权限控制)  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  如何获取上海专业网站定制建站电话?  如何在Windows虚拟主机上快速搭建网站?  想要更高端的建设网站,这些原则一定要坚持!  Laravel如何实现用户密码重置功能?(完整流程代码)  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  PHP正则匹配日期和时间(时间戳转换)的实例代码  开心动漫网站制作软件下载,十分开心动画为何停播?  如何选择可靠的免备案建站服务器?  如何快速启动建站代理加盟业务?  Laravel如何使用.env文件管理环境变量?(最佳实践)  在线制作视频网站免费,都有哪些好的动漫网站?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Android滚轮选择时间控件使用详解  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Android GridView 滑动条设置一直显示状态(推荐)  Java垃圾回收器的方法和原理总结  微信小程序 canvas开发实例及注意事项  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何打造高效商业网站?建站目的决定转化率  如何选择PHP开源工具快速搭建网站?  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  javascript读取文本节点方法小结  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何用已有域名快速搭建网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  Laravel如何实现API版本控制_Laravel版本化API设计方案  php json中文编码为null的解决办法  UC浏览器如何设置启动页 UC浏览器启动页设置方法