代码编织梦想

死锁是一种无限的互相等待的状态,两个或两个以上的线程或进程构成一个互相等待的环状。以两个线程为例,线程一持有A锁同时在等待B锁,而线程二持有B锁同时在等待A锁,这就导致两个线程互相等待无法往下执行。现实生活中一个经典的死锁情形就是四辆汽车通过没有红绿灯的十字路口,假如四辆车同时到达中心的,那么它们将形成一个死锁状态。每辆车拥有自己车道上的使用权,但同时也在等另外一辆汽车让出另外一条道的使用权

死锁的例子

该例子中一共有lock1和lock2两个锁。线程一启动后先尝试获取lock1锁,成功获取lock1后再继续尝试获取lock2锁。而线程二则是先尝试获取lock2锁,成功获取lock2锁后再继续尝试获取lock1锁。当我们某次启动程序后可能的输出情况如下,也就进入了死锁状态,但并非每次都一定会进入死锁状态,每个线程睡眠100毫秒是为了增加死锁的可能。最终两个线程处于互相无线等待状态,获得lock1的线程一在等lock2,而获得lock2的锁却在等lock1。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/li1669852599/article/details/111101854

SpringBoot系列:5.项目中使用多个数据库-爱代码爱编程

内容概述 本文简要介绍下,当项目使用多个数据库的时候,druid如何配置。 文章目录 在之前的文章,SpringBoot系列:1.快速搭建web api项目,提到可以通过很简单的配置实现数据库的访问,例如: spring: datasource: druid: url: jdbc:mysql://localhost:3306

复杂业务系统的架构设计思路-爱代码爱编程

最近有一些系统设计方面的思考和体会,在这里梳理一下。   做技术方案,核心是下面几个问题: 做什么?- 产品需求 业务上怎么做?- 业务文档 技术上怎么做?- 技术方案 代码怎么实现?- 落地实现 明确了这几个问题,可以处理大部分日常需求开发,如果是比较复杂的业务系统,就需要拆解的更精细。 比如电商的商品管理、订单交易等系统的开发和重构,业

手动实现CAS 思想之 AtomicInteger 自增原理(十一)-爱代码爱编程

1、手动实现CAS 思想之自增原理: public class HalfAtomicInt { private static AtomicInteger atomicI = new AtomicInteger(0); /*CAS递增方法实现*/ public void increament() { for (;

汇总一下Intellij IDEA炫酷好用的插件-爱代码爱编程

> 作者:sunnylovecmc > 来源:https://blog.csdn.net/sunny243788557 基本上是最全的了,不用东奔西走的找了!文末还有其他插件补充列表! 这里补充一下常用的插件, 非常推荐! 1、日晒主题 Solarized Themes by 4lex4 的 推荐指数:☆☆☆☆☆ 推荐理由:日晒主题本

redis 哨兵机制-爱代码爱编程

问题: 当主节点master挂了怎么办? 答:需要设置一个哨兵,如果检测到master挂了,那么将其中一台的从节点设置为主节点 如何配置: 安装目录中有一个sentinel.conf 文件,可以将此文件进行拷贝进行修改 拷贝文件去其他目录下 cp sentinel.conf /usr/local/redis sentinel.conf 文件 da

JavaWeb安全登录功能+记住密码+监听在线人数+列表展示+过滤器-爱代码爱编程

JavaWeb 数据库搭建 -- 创建数据库javaweb CREATE DATABASE IF NOT EXISTS javaweb; -- 创建用户表 CREATE TABLE users( uid INT PRIMARY KEY auto_increment, username VARCHAR(10) NOT NULL, password

N0.1每周心得-爱代码爱编程

#加入小组已经有几周的时间了,今天谈谈我这几周生活和学习上的改变 生活方面: 从暑假的每天睡懒觉到现在的准时准点到小组学习 ,每天都过得很充实,虽然和我步入大学之前想象中的轻松娱乐大学生活不太一样,但忙碌充实也让我感悟到了大学真正的魅力:提升自己,成为更优秀的自己。 并且这周六我们小组聚餐中,有机会能和学长学姐们深入交流,学长学姐给我们分享在大学中的生

Java流的分类及其常见的类。-爱代码爱编程

下面是Java流的分类情况 空格代表继承关系 我们可以看到无论是字符流和字节流中每一个输入流(InputStream,Reader)都有相互对应的输出流(OutputStream,Writer). 字节流 InputStream  FlieInputStream  PipedInputStream  ObjectInputStream  ByteArra

Java中 i=i++ 问题底层原理解析-爱代码爱编程

有如下代码: public class Main { public static void main(String[] args) { int i = 10; i = i++; System.out.println(i); } } 运行后,发现结果为10,而不是11。这是为什么呢? 首

从摩托罗拉、诺基亚再到航空领域应用,这款开源数据库的成功如何成就天才程序员?-爱代码爱编程

作者 | Richard Hipp      编译 | 马超 出品 | CSDN(ID:CSDNnews) 如果说有什么事物能够使男程序员心中的父爱完全觉醒,那我想一定是投身于自己创建的开源项目中去了。在和熊谱翔、黄东旭等储多开源大神的接触中,我可以明显感到他们对于自身开源项目的那份执着与热爱。虽然说贝佐斯、盖茨等IT巨头