摘要: > 本文主要讲述死锁的一个经典案例—哲学家就餐问题,并对该问题进行修复。 ### 1. 问题描述 ![哲学家就餐问题](https://img2023.cnblogs.com/blog/1220983/202306/1220983-20230603114749562-1769304662.png) 阅读全文
posted @ 2023-06-03 11:47 Java知者 阅读(107) 评论(0) 推荐(0) 编辑
摘要: > 本文主要讲述死锁的一个经典案例—银行转账问题,并对该问题进行定位、修复。 ### 1. 问题说明 当账户A对账户B进行转账时, - 首先需要获取到`两把锁`:账户A和账户B的锁。 - 获取两把锁成功,且余额大于0,则扣除转出人的余额,并增加收款人的余额,而且这些操作都是在一个`原子操作`中 - 阅读全文
posted @ 2023-06-03 11:47 Java知者 阅读(289) 评论(0) 推荐(0) 编辑
摘要: ![](https://img2023.cnblogs.com/blog/1220983/202306/1220983-20230603114555922-461946045.png) ## 一、Java内存模型简介 ### 1. Java内存模型的“底层原理” 从Java代码到CPU指令的变化过程 阅读全文
posted @ 2023-06-03 11:46 Java知者 阅读(102) 评论(0) 推荐(0) 编辑
摘要: ### 0. 为什么需要单例模式? - 节省内存和计算 - 保证结果正确 - 方便管理 **使用场景:** ![](https://img2023.cnblogs.com/blog/1220983/202306/1220983-20230603114517917-2115984051.png) ## 阅读全文
posted @ 2023-06-03 11:45 Java知者 阅读(222) 评论(0) 推荐(0) 编辑
摘要: ### 1. synchronized 关键字的作用 synchronized 关键字解决的是多个线程之间访问资源的同步性,用于保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果。 ### 2. 作用范围 - 修饰代码块:大括号括起来的代码,作用于调用的对象。 - 修饰方法:整个方 阅读全文
posted @ 2023-06-03 11:44 Java知者 阅读(56) 评论(0) 推荐(0) 编辑
摘要: ## 一、volatile 关键字的适用与不适用场景 ### 1. 什么是 volatile - volatile是一种同步机制,类似于 Lock 和 Synchronized ,但是他更轻量级,因为使用 volatile 并不会发生上下文切换等开销很大的行为。 - 如果一个变量被volatile修 阅读全文
posted @ 2023-06-03 11:44 Java知者 阅读(13) 评论(0) 推荐(0) 编辑
摘要: ## 一、概念 ### 1. 什么是线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。 通俗来说就是:不管业务中遇到怎么的多个线程访问某个 阅读全文
posted @ 2023-06-03 11:43 Java知者 阅读(211) 评论(0) 推荐(0) 编辑
摘要: ## 一、需要 UncaughtExceptionHandler 的原因 ### 1. 主线程可轻松的发现异常,子线程的异常比较隐蔽,难以发现 程序运行时,子线程发生了异常,并不影响主线程,也不会终止主线程的程序,主线程将继续执行,这时候子线程的异常可能就不会被察觉,就使得子线程的功能出了问题,但没 阅读全文
posted @ 2023-06-03 11:42 Java知者 阅读(411) 评论(0) 推荐(1) 编辑
摘要: ![线程各属性纵览](https://img2023.cnblogs.com/blog/1220983/202306/1220983-20230603114109107-477345835.png) 如上图所示,线程有四个属性: - 线程ID - 线程名称 - 守护线程 - 线程优先级 ### 1. 阅读全文
posted @ 2023-06-03 11:41 Java知者 阅读(420) 评论(0) 推荐(0) 编辑
摘要: # 线程的 6 个状态(生命周期) ## 1. 线程的一生中有哪几个状态 有6种状态,分别如下: - New - Runnable - Blocked - Waiting - Timed_Waiting - Terminated ## 2. 每个状态的含义是什么 New:是在 new Thread( 阅读全文
posted @ 2023-05-27 21:50 Java知者 阅读(259) 评论(0) 推荐(0) 编辑