写一个死锁

Saber本 Saber本     2022-11-20     295

关键词:

死锁产生的原因:

一个线程进入锁一需要锁二,

另一个线程进入锁二需要锁一,

由于锁一锁二都被占了,所以线程执行不下去。

所以只需写一个相互交叉的锁一锁二就可以产生死锁。

class sisuogoucheng implements Runnable

  private boolean panduan=true;

  sisuogoucheng(boolean panduan)
  
    this.panduan=panduan;  //写一个判断条件使线程进入不同的锁。
  


  public void run()

      

    if(panduan)

    
      synchronized(mykey.obj1)
      
        System.out.println("t1----obj1");
        synchronized(mykey.obj2)
        
          System.out.println("t1------obj2");
        
      
    
    else
    
      synchronized(mykey.obj2)
      
        System.out.println("t2-------obj2");
        synchronized(mykey.obj1)
        
          System.out.println("t2---------obj1");
        
      
    
  

class mykey

  static Object obj1=new Object();  //创建两个不同的锁
  static Object obj2=new Object();

public class sisuo

  public static void main(String[] args)

  

    Thread t1=new Thread(new sisuogoucheng(true));
    Thread t2=new Thread(new sisuogoucheng(false));

    t1.start();
    t2.start();
  

写一个java死锁的demo

packagecom.simon.study;/***线程死锁一个线程要同时拥有两个对象的资源才能进行下一步操作;*@author:Simon*@date:2017年7月29日下午9:48:43*/publicclassDeadLockimplementsRunnable{staticObjecto1=newObject(),o2=newObject();publicintflag=1;publi 查看详情

写一个会导致死锁的线程(代码片段)

publicclassTeststaticObjecto1=newObject();staticObjecto2=newObject();publicstaticvoidmain(String[]args)newThread(newRunnable()@Overridepublicvoidrun()synchronized(o1)System.out.println("线程1锁o1"); 查看详情

java线程问题,写一个死锁(原理:只有互相都等待对方放弃资源才会产生死锁)

packagecom.swift;publicclassDeadLockimplementsRunnable{privatebooleanflag;DeadLock(booleanflag){this.flag=flag;}publicvoidrun(){while(true){if(flag){synchronized("suo1"){System.out.println(Thread.curr 查看详情

java编程写一个会导致死锁的程序

线程A和线程B相互等待对方持有的锁导致程序无限死循环下去。真正理解什么是死锁,这个问题其实不难,几个步骤:(1)两个线程里面分别持有两个Object对象:lock1和lock2。这两个lock作为同步代码块的锁;(2)线程1的run()方法... 查看详情

线程死锁

...过程中应尽量的避免线程死锁。有时在面试中会要求写出一个死锁的程序演示,如下:1//写一个死锁程序2publicclassDeadLock{3//主程序执行4publicstaticvoidmain(String[]args){5 查看详情

死锁现象

死锁发生在当一个服务器和客户端同时试图往一个连接上写东西和同时从一个连接上读的时候。在这种情况下没有进程可以得到任何数据。#!/usr/bin/env python#-*- coding:utf-8 -*-#测试锁死的情况import socket, tracebackhost... 查看详情

并发编程之死锁解析(代码片段)

前言在Java的并发编程中,有一个问题需要特别注意,那就是死锁,如果发生了死锁,基本就是重启,而重启将会丢失运行中的数据。所以,了解死锁的形成并排查死锁到预防死锁成了一个重要的问题。我们了解任何一个事情的... 查看详情

死锁案例(代码片段)

...一on运维转|来源:公众号yangyidba 一、前言死锁其实是一个很有意思也很有挑战的技术问题,大概每个DBA和部分开发朋友都会在工作过程中遇见。关于死锁我会持续写一个系列的案例分析,希望能够对想了解死锁的朋友有所帮... 查看详情

一个最不可思议的mysql死锁分析

一个最不可思议的MySQL死锁分析死锁问题背景 做MySQL代码的深入分析也有些年头了,再加上自己10年左右的数据库内核研发经验,自认为对于MySQL/InnoDB的加锁实现了如指掌,正因如此,前段时间,还专门写了一篇洋洋洒洒的文... 查看详情

CreateProcess cmd.exe 读/写管道死锁

】CreateProcesscmd.exe读/写管道死锁【英文标题】:CreateProcesscmd.exeread/writepipesdeadlock【发布时间】:2017-10-0617:41:10【问题描述】:您好,我正在尝试为cmd.exe制作前端GUI,以便将其扩大,但我卡住了。我尝试设计这样的APIchar*Directory=W... 查看详情

同步函数死锁现象(代码片段)

多线程:一个进程中有多个线程可以同时执行任务多线程的好处:1、解决一个进程中可以同时执行多个任务的问题。2、提高了资源利用率多线程的弊端:1、增加了CPU的负担2、降低了一个进程中线程的执行概率3、出现了线程安... 查看详情

哲学家就餐问题与死锁总结

参考技术A死锁的四个条件:(1)互斥条件:一个资源每次只能被一个进程使用。(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强... 查看详情

事务(进程id64)与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品。

...台写的异常日志会偶尔出现以下错误。事务(进程ID64)与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品。请重新运行该事务 实所有的死锁最深层的原因就是一个:资源竞争 表现一:  一个用户A访问表A(锁住... 查看详情

Visual Studio:上下文切换死锁

...错误情况是在VS、调试器、我的程序还是数据库中。这是一个Windows应用程序。不是网络应用。来自VS的第一条消息是一个弹出框,上面写着:“没有为任何调用堆栈帧加载任 查看详情

java死锁排查和javacpu100%排查的步骤整理(转)

...事,必先利其器简介本篇整理两个排查问题的简单技巧,一个是java死锁排查,这个一般在面试的时会问到,如果没有写多线程的话,实际中遇到的机会不多;第二个是javacpu100%排查,这个实际的开发中,线的应用出现这个问题可... 查看详情

c#无意间写了一段线程死锁的代码

源码如下:privatevoidaction_Click(objectsender,RoutedEventArgse)Taskt=newTask(()=>for(inti=0;i<10;i++)Thread.Sleep(1000);this.Dispatcher.Invoke(()=>lblStr.Conten 查看详情

处理数据库死锁导致数据库不能写操作(代码片段)

查询当前数据库中被锁的事物selectb.username,b.sid,b.serial#,logon_timefromv$locked_objecta,v$sessionbwherea.session_id=b.sidorderbyb.logon_time清除被锁事物--altersystemkillsession'SID,SERIAL#';altersystemkill 查看详情

处理数据库死锁导致数据库不能写操作(代码片段)

查询当前数据库中被锁的事物selectb.username,b.sid,b.serial#,logon_timefromv$locked_objecta,v$sessionbwherea.session_id=b.sidorderbyb.logon_time清除被锁事物--altersystemkillsession'SID,SERIAL#';altersystemkill 查看详情