死锁

2023-05-16

一个死锁的代码

public class Demo{

public static void main(String[] args) {

Object g = new Object();
Object m = new Object();

Goods goods = new Goods(g,m);
Money money = new Money(g,m);

Thread thread1 = new Thread(goods);
Thread thread2 = new Thread(money);

thread1.start();
thread2.start();
}
}


class Goods implements Runnable{
Object goods;
Object money;

public Goods(Object goods, Object money) {
super();
this.goods = goods;
this.money = money;
}

@Override
public void run() {
while(true){
test();
}
}

private void test(){
synchronized(goods){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

synchronized(money){}
}
System.out.println("一手给货!!!");
}

}


class Money implements Runnable{


Object goods;
Object money;

public Money(Object goods, Object money) {
super();
this.goods = goods;
this.money = money;
}


@Override
public void run() {
while(true){
test();
}
}

private void test(){
synchronized(money){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}  
synchronized(goods){}
}
System.out.println("一手给钱!!!");
}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

死锁 的相关文章

  • Android漏洞挖掘第三期:客户端完整性未校验

    引言 xff1a 每一期都有相同的内容部分 xff0c 主要为了让大家单独看一期依旧能看懂 xff01 xff01 xff01 0x01 APK文件 依然从APK文件开始说起 xff0c 相信大家看我之前的帖子 xff0c 已经知道APK文
  • 查看LIBC版本

    如果题目提供了 so文件 xff0c 可以尝试直接从 so文件中获取GLIBC的版本 strings so span class token operator span span class token function grep span
  • 荔枝派 Nano 全志 F1C100s 编译运行 Linux 笔记

    首先是荔枝派的官方文档 xff0c 写的不是很细 xff0c 应当说我们必须明确几点 xff1a 出厂时 SPI Flash 自带了一个 U Boot 43 Linux Kernel xff08 出厂的时候可能烧过了 xff09 xff0c
  • Linux安装火狐并使用国内书签

    span class token function wget span qO span class token string 39 https download mozilla org product 61 firefox esr late
  • 构建 Kubernetes 文档

    访问 kubernetes io 实在是有点慢 xff0c 所以决定自行构建 span class token comment Install HUGO if not installed span span class token comm
  • 使用 vuetify

    Vuetify 是一个非常优秀的前端组件库 xff0c 天生的响应式和 Material Design 风格 2022 11 01 终于迎来了 Vuetify 3 0 xff0c 完整支持了 Vue 3 语法 对于现有使用 VueCLI 和
  • VB6.0中提示:该部件的许可证信息没有找到,在设计环境中,没有合适的许可证使用该功能”的解决办法

    用VB6 0中的某些控件时总是提示 该部件的许可证信息没有找到 xff0c 在设计环境中 xff0c 没有合适的许可证使用该功能 xff01 xff08 主要是因为VB6 0精简版 xff09 具体解决方法 xff1a 这里需要一个工具 x
  • 实现黑客帝国数字雨效果

    今日闲得慌 xff0c 折腾了一个黑客帝国数字雨效果 xff0c 还蛮不错的 操作 xff1a 新建一个文本文档 xff0c 输入 以下代码 xff0c 再将扩展名修改为 Bat xff0c 运行即可 命令提示符代码 xff1a xff08
  • Android Studio电脑不支持HAXM的解决办法

    测试APP时出现以下错误信息 xff1a Intel HAXM is required to run this AVD Your CPU does not support required features VT x or SVM Unfo
  • Relocations in generic ELF (EM: 62) 错误的解决方案

    Android studio 或者 xcode 使用第三方库时可能出现这个问题 xff0c could not read symbols File in wrong format 这是由于自己编译的 a 静态库 或 so 动态库 与目标平台
  • std::list 中 size() 的时间复杂度

    很奇怪的 xff0c 或者说是一个不应成为问题的问题 std list 的 size 方法时间复杂度是多少 xff1f 第一感觉应该是 O 1 没错吧 xff0c 多一个变量用于储存链表长度应该是很轻易的事情 于是有了下面这段代码 xff1
  • C# 调用FFmpeg 根据图片合成视频

    C 调用FFmpeg 根据图片合成视频 1 项目结构 2 代码 using System using System Collections Generic using System Diagnostics using System Web
  • TTP223使用说明

    管脚定义 xff1a 引脚号 引脚名称 I O 简单描述 1 Q O CMOS输出 2 VSS P 电源脚 3 IN I O 触摸输入 4 AHLB
  • Visual Studio 资源文件 Error RC2135 错误的解决方案

    用记事本打开 xff0c 另存为 xff0c 覆盖 xff0c 编码选择 Unicode xff08 其实是 UTF 16 LE with BOM xff09 即可 来源 xff1a https stackoverflow com ques
  • 数学基础 —— 向量运算(叉乘)

    向量的叉乘 xff0c 即求同时垂直两个向量的向量 xff0c 即c垂直于a xff0c 同时c垂直于b xff08 a与c的夹角为90 xff0c b与c的夹角为90 xff09 c 61 a b 61 xff08 a y b z b y
  • Nginx安装及简介

    一 Nginx简介 Nginx是一个高性能的服务器 xff0c 类似于Apache Tomcat Jetty IIS等都是服务器 Nginx的优势 xff1a 1 Tomcat Jetty面向Java语言 xff0c 先天就是重量级的web
  • 数据结构之数组代码实现

    数据结构之数组代码实现 package com algorithm array 64 author xff1a Vimonster 64 date xff1a 2019 12 04 22 58 13 64 slogan 任时间再怎样低头呢喃
  • Invalid VCS root mapping

    idea导入springboot项目后 报错如下 xff1a 这个错误的原因是maven路径配置不对 xff0c 解决方案 file setting 在左上角的搜索框输入maven 配置正确的maven安装目录及seetting xml位置
  • Intger和int做比较的坑

    Integer 缓存 xff08 IntegerCache xff09 是 Java 5 中引入的一个有助于节省内存 提高性能的特性 废话不多说 xff0c 看一个栗子 64 author xff1a Vimonster 64 time 2
  • Springboot打成war包部署到Tomcat

    1 在pom xml中修改打成的包名称 lt build gt lt finalName gt 你的包名称 lt finalName gt lt plugins gt lt plugin gt lt groupId gt org sprin

随机推荐

  • zookeeper节点详解

    一 节点类型 persistent 持久节点 persistent sequential 持久序号节点 ephemeral 临时节点 ephemeral sequential 临时序号节点 1 persistent 持久节点 默认创建的节点
  • Zookeeper客户端详解

    zk常见客户端有三种 zookeeper原生Java APIZkClientApache curator 1 原生ZookeeperAPI lt dependency gt lt groupId gt org apache zookeepe
  • UILabel标签文字过长时的显示方式

    lineBreakMode xff1a 设置标签文字过长时的显示方式 label lineBreakMode 61 NSLineBreakByCharWrapping 以字符为显示单位显示 xff0c 后面部分省略不显示 label lin
  • error launching idea

    报错内容如下 解决方法 xff1a 如下图 idea 右击 gt 属性 gt 兼容性 gt 设置 gt 勾选 以管理员身份运行此程序 gt 应用 gt 确定
  • idea打开vue项目卡死问题解决

    解决方案 xff1a file gt settings gt File Types gt ActionScript gt as gt 给下面添加 node modules 然后 apply gt ok
  • Linux下载并安装rabbitmq-server-3.6.5-1.noarch.rpm

    目录 1 安装rabbitmq所需要的依赖包 2 下载安装包 3 安装服务命令 4 修改配置 5 启动rabbitmq 6 rabbitmq控制台安装 7 访问你的虚拟机 ip 15627 会出现下面的页面 用户名和密码都是 guest 8
  • nacos集群: code:503 msg: server is STARTING now, please try again later!

    在搭建nacos集群的时候 xff0c 集群启动成功的前提下 启动项目报如下错误 xff1a 解决方法 xff1a 1 cd 你nacos的bin目录 2 vim startup sh 3 在 JAVA OPT 61 34 JAVA OPT
  • yum安装rabbitmq的目录

    一般我们yum安装完rabbitmq后 xff0c 不知道安装到什么地方了 xff0c 其实是安装到下面的路径 usr lib rabbitmq lib 如下图所示 xff1a
  • Linux环境安装Redis

    下载地址 xff1a http download redis io releases 安装步骤 xff1a 1 安装gcc yum install gcc 2 把下载好的redis 4 0 14 tar gz xff08 选择你自己的版本
  • Redis主从环境搭建

    首先先搭建一个Redis xff1a 搭建方法 xff1a Linux环境安装redis 1 新建一个目录 xff0c 按照上述链接中的方法再次搭建一个redis 2 搭建完后 xff0c 修改从节点的redis conf文件 2 1 修改
  • Redis集群环境搭建

    一 下载redis xff08 此处我下载的是5 0 3版本 xff09 下载地址 xff1a http download redis io releases Linux命令下载 xff1a wget http download redis
  • Jvisualvm使用及添加Visual GC组件

    只要装了jdk xff0c 就会自带这个工具 xff0c 路径位置如下 xff1a JVisualvm添加Visual GC插件 动态观察各个年代GC情况 访问地址 xff1a https visualvm github io plugin
  • Spring源码编译Java: 找不到符号 InstrumentationSavingAgent

    报错如下 xff1a 解决 xff1a 将spring context gradle文件的 下面这一行 br optional project 34 spring instrument 34 br 修改为 br compile projec
  • RabbitMQ学习(六)——消息确认机制(Confirm模式)

    在上一篇文章中我们讲解了RabbitMQ中的AMQP事务来保证消息发送到Broker端 xff0c 同时我们可以在事务之间发送多条消息 xff08 即在channel txSelect 和channel txCommit 之间发送多条消息
  • zookeeper初识

    一 节点类型 persistent 持久节点 persistent sequential 持久序号节点 ephemeral 临时节点 ephemeral sequential 临时序号节点 1 persistent 持久节点 默认创建的节点
  • xmlns:dubbo=“http://dubbo.apache.org/schema/dubbo“报错

    请先看看你有没有加dubbo的maven依赖 xff0c 官网在做这个demo的时候并没有说要加maven依赖 xff0c 所以会xml中会报红 lt beans xmlns xsi 61 34 http www w3 org 2001 X
  • tomcat 8源码环境编译

    源码下载 下载地址 xff1a https tomcat apache org download 80 cgi 配置 1 解压下载好的源码包 apache tomcat 8 5 57 src zip 2 解压好后 xff0c 在解压后的目录
  • servlet配置文件解析

    1 配置 lt servlet gt xff08 以下代码均是web xml中的 xff09 lt servlet gt lt servlet name gt FirstServlet lt servlet name gt lt servl
  • 线程基础之—线程的创建

    线程创建分三类 1 继承Thread 43 run 启动 xff1a 创建子类对象 43 对象 start 2 实现Runnable 43 run 启动 xff1a 使用静态代理 1 gt 创建真实角色 2 gt 创建代理角色 Thread
  • 死锁

    一个死锁的代码 public class Demo public static void main String args Object g 61 new Object Object m 61 new Object Goods goods