首页 > 其他分享 >死锁

死锁

时间:2023-03-24 21:33:08浏览次数:34  
标签:synchronized void Object 死锁 new public

死锁

死锁怎么产生的

两个或多个线程,互相拥有对方需要的资源,又互相抢占对方的资源,又不肯释放自己的资源,这就造成了死锁。

java中怎么造成死锁的

出现了锁的嵌套,解决办法就是不要写锁的嵌套

死锁代码实现如下

public class DeadLock {
    public static void main(String[] args) {
        Object o1 = new Object();
        Object o2 = new Object();
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                    //锁1
                    synchronized (o1){
                        //锁2
                        synchronized (o2){
                            System.out.println("张三吃饭");
                        }
                    }
                }
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                    //锁2
                    synchronized (o2){
                        //锁1
                        synchronized (o1){
                            System.out.println("李四吃饭");
                        }
                    }
                }
            }
        }).start();
    }
}

结果如下:

image-20230322142942203

可以看到输出了数据,但是程序并没有停止,但是也不再输出数据,这是就产生了死锁

标签:synchronized,void,Object,死锁,new,public
From: https://www.cnblogs.com/qifenku/p/17251488.html

相关文章

  • MySql 死锁
    MySql死锁一、什么是死锁InnoDB存储引擎定义了四种类型的行锁隔离等级对加锁的影响当前数据对加锁的影响二、为什么会形成死锁两阶段锁协议产生死锁的四个必要条件三、MySQ......
  • 死锁的四个必要条件以及处理策略
    一、什么是死锁死锁是指两个或两个以上的进程(线程)在运行过程中因争夺资源而造成的一种僵局。例如,某计算机系统中只有一台打印机和一台输入设备,进程P1正占用输入设备,同时......
  • JUC——什么是线程死锁?如何避免死锁?
      下面通过一个例子来说明线程死锁,代码模拟了上图的死锁的情况(代码来源于《并发编程之美》):publicclassDeadLockDemo{privatestaticObjectresource1=......
  • [MySql] 数据库死锁的排查和相关知识
    查看数据库最近的一次死锁执行以下命令:showengineinnodbstatus;查询结果......------------------------LATESTDETECTEDDEADLOCK------------------------2......
  • 死锁排查
    1.执行死锁代码publicclassDeadLockTest{publicstaticvoidmain(String[]args)throwsInterruptedException{//a线程持有a锁,并尝试获取b锁;b线程持......
  • golang中关于死锁的思考与学习
    1、Golang中死锁的触发条件1.1书上关于死锁的四个必要条件的讲解发生死锁时,线程永远不能完成,系统资源被阻碍使用,以致于阻止了其他作业开始执行。在讨论处理死锁问题的各......
  • 死锁
    packageedu.wtbu;//死锁:多个线程互相抱着对方需要的资源,然后形成僵持publicclassDemo10{publicstaticvoidmain(String[]args){Makeupg1=newMake......
  • linux系统如何查看是否是线程死锁,多线程中如何使用gdb精确定位死锁问题
    在多线程开发过程中很多人应该都会遇到死锁问题,死锁问题也是面试过程中经常被问到的问题,这里介绍在c++中如何使用gdb+python脚本调试死锁问题,以及如何在程序运行过程中......
  • 16.MySQL数据库之mysql-5.7 show engine innodb status 详解,常用的地方一、死锁分析 
     一、show engine innodb status 简介:show engine innodb status 是mysql提供的一个用于查看innodb引擎时间信息的工具,就目前来说有两处比较常用的地......
  • 死锁的检测和解除
    死锁的检测和解除1、死锁的检测2、死锁的解除知识回顾......