首页 > 其他分享 >代码模拟死锁

代码模拟死锁

时间:2023-11-03 17:01:48浏览次数:28  
标签:currentThread Thread get 代码 System 死锁 println 模拟 out

public class DeadLockDemo {
    private static Object resource1 = new Object();//资源 1
    private static Object resource2 = new Object();//资源 2

    public static void main(String[] args) {
        new Thread(() -> {
            synchronized (resource1) {
                System.out.println(Thread.currentThread() + "get resource1");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread() + "waiting get resource2");
                synchronized (resource2) {
                    System.out.println(Thread.currentThread() + "get resource2");
                }
            }
        }, "线程 1").start();

        new Thread(() -> {
            synchronized (resource2) {
                System.out.println(Thread.currentThread() + "get resource2");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread() + "waiting get resource1");
                synchronized (resource1) {
                    System.out.println(Thread.currentThread() + "get resource1");
                }
            }
        }, "线程 2").start();
    }
}

避免死锁

new Thread(() -> {
            synchronized (resource1) {
                System.out.println(Thread.currentThread() + "get resource1");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread() + "waiting get resource2");
                synchronized (resource2) {
                    System.out.println(Thread.currentThread() + "get resource2");
                }
            }
        }, "线程 2").start();


标签:currentThread,Thread,get,代码,System,死锁,println,模拟,out
From: https://blog.51cto.com/u_14299064/8172952

相关文章

  • 飞行模拟机—使用WED建设一个新机场
    为了有一个独立的数据验证空间,我们需要自己来建一个机场,今天用到的工具是WorldEditor2.5(简称WED)。WED软件功能非常丰富,可用来绘制机场的多种场景,当下我们只取其中关于跑道和灯光的内容来使用,机坪、滑行道等细节内容时间关系暂时就不考虑了。打开软件后,在初始界面中,首先......
  • 基于泛微Ecology代码块开发实现劳动合同开始结束日期、试用开始结束日期计算赋值
    基于泛微Ecology代码块开发实现劳动合同开始结束日期、试用开始结束日期计算赋值//劳动合同开始结束日期、试用开始结束日期计算赋值,载入时触发,jQuery().ready(function(){ varCalculatecontractdate=function(){//获取相关数据varrzrq=WfForm.getFieldValue("field10954")......
  • 零代码编程:用ChatGPT批量重命名多个子文件夹里面的文件标题名
    一个文件夹:D:\英语学习图书配套资源\亲子英语游戏书,这本最好玩,里面有多个子文件夹:子文件夹里面的文件要重命名,将文件名称中的track替换为子文件夹名称:在ChatGPT中输入提示词:你是一个Python编程专家,要完成一个批量删除掉对话音频文件开头的任务,具体步骤如下:打开文件夹:D:\英语学习图......
  • MISBoot低代码开发平台、IT人员的福音!
        近年来,随着各行各业对数字经济、业务数字化的重视,发展,强化数字技术创新应用,全面推进企业数字化转型工作。在全国各行业数字化转型的浪潮中,低代码通过可视化、模块化开发操作,降低软件开发门槛,强化资源扩展和信息集成,助力各行业数字化发展。    作为当前软件开发领......
  • 将服务器上的代码 git到码云
    基本操作初始化Git仓库(如果尚未初始化),使用以下命令:gitinit将文件添加到Git仓库的暂存区。使用以下命令将文件添加到暂存区,替换filename.ext为你要上传的文件名:gitaddfilename.exteg:gitaddfastdeeploy如果要添加整个目录的文件,可以使用gitadd.。提交已添加到......
  • 使用Qemu在Windows上模拟ARM平台
    我们平常使用的PC一般都是x86架构的IntelCPU,如果由于某些原因,需要使用arm架构的操作系统,我们无法使用一些虚拟机软件(如vmwareworkstation、virtualbox等)进行安装,因为这种类型的虚拟机软件只能安装和宿主机的CPU相同架构的系统。此时,我们可以使用qemu软件。Qemu是一款开源的模拟......
  • 苏格拉底问答、实践过程截图、遇到问题解决问题截图,代码链接
    #include<signal.h>#include<stdio.h>#include<sys/time.h>intcount=0;structitimervalt;voidtimer_handler(intsig){printf("timer_handler:signal=%dcount=%d\n",sig,++count);if(count>=8){printf("cancel......
  • JAVA技术栈的有福啦!这款IDEA插件,写完代码即可调试
    国产API调试工具Apipost推出IDEA插件,写完代码就可以调试接口并一键生成接口文档!而且还可以根据已有的方法帮助您快速生成url和params。ApipostHelper=API调试工具+API管理工具+API搜索工具。在商店中搜索或直接点击下方链接即可下载:https://plugins.jetbrains.com......
  • IDEA插件推荐,代码写完直接调试、生成接口文档
    国产API调试工具Apipost推出IDEA插件,写完代码就可以调试接口并一键生成接口文档!而且还可以根据已有的方法帮助您快速生成url和params。ApipostHelper=API调试工具+API管理工具+API搜索工具。在商店中搜索或直接点击下方链接即可下载:https://plugins.jetbrains.com......
  • JAVA技术栈的有福啦!这款IDEA插件,写完代码即可调试
    国产API调试工具Apipost推出IDEA插件,写完代码就可以调试接口并一键生成接口文档!而且还可以根据已有的方法帮助您快速生成url和params。ApipostHelper=API调试工具+API管理工具+API搜索工具。在商店中搜索或直接点击下方链接即可下载:https://plugins.jetbrains.com/p......