06 2023 档案

摘要:## 一、概述 ### 1. 什么是控制并发流程? 线程一般是由线程调度器自动控制的,但有些场景需要按照我们程序员的意愿去实现多线程之间相互配合,从而满足业务逻辑。比如: - 让线程A等待线程B执行完后再执行等一些相互合作的逻辑; - 或一系列线程等待一个线程运行完毕或发出信号之后再执行 ### 2 阅读全文
posted @ 2023-06-15 12:15 Java知者 阅读(54) 评论(0) 推荐(0) 编辑
摘要:## 并发容器概览 ConcurrentHashMap : 线程安全的HashMap CopyOnWriteArrayList: 线程安全的List BlockingQueue:这是一个接口,表示阻塞队列,非常适合用于作为数据共享的通道 ConcurrentLinkedQueue : 高效的非阻塞并 阅读全文
posted @ 2023-06-14 14:56 Java知者 阅读(36) 评论(0) 推荐(0) 编辑
摘要:## 一、什么是不可变性(Immutable) - 如果对象在`被创建后,状态就不能被修改`,那么它就是不可变的 - 这个对象不能被修改指: - 对象指向(引用)不可变 - 字段不可变 - 成员变量不可变 案列演示: *person对象,age和name属性都不能再变* ```java /** * 阅读全文
posted @ 2023-06-13 22:08 Java知者 阅读(91) 评论(0) 推荐(0) 编辑
摘要:## 一、原子类简介 ### 1 什么是原子类 Java中提供了一些原子类,原子类包装了一个变量,并且提供了一系列对变量进行原子性操作的方法。原子性的意思是对于一组操作,要么全部执行成功,要么全部执行失败,不能只有其中某几个执行成功。在多线程的情况下能够保证操作 `不会被中断`,从而能保证并发安全 阅读全文
posted @ 2023-06-13 22:07 Java知者 阅读(1614) 评论(0) 推荐(0) 编辑
摘要:### 1. 简介 CAS的底层调用native方法,最终是利用CPU的一个特殊指令,该指令由CPU保证了原子性,而且包含多个操作,比如先比较再更新。 原理: - (1)需要读写的内存值(V)、原值(A)和新值(B)。如果V的值与原值A相匹配,那么把B设置给V,否则处理器不做任何操作。 - (2)无 阅读全文
posted @ 2023-06-13 22:07 Java知者 阅读(112) 评论(0) 推荐(0) 编辑
摘要:## 一、Lock接口 ### 1 Lock简介&地位&作用 - 锁是一种工具,用于控制对`共享资源`的访问 - Lock和synchronized是最常见的两个锁,他们都能够达到线程安全的目录,但是使用和功能上又有较大的不同 - Lock接口最常见的实现类就是`ReentrantLock` - 通 阅读全文
posted @ 2023-06-13 22:06 Java知者 阅读(1204) 评论(0) 推荐(0) 编辑
摘要:## 一、ThreadLocal 简介 ### 1. ThreadLocal 是什么? ThreadLocal 字面意思是本地线程,其实更准确来说是线程局部变量,线程类 Thread 有个变量叫做 threadLocals,其类型就是ThreadLocal.ThreadLocalMap 类型,他其实 阅读全文
posted @ 2023-06-13 22:04 Java知者 阅读(270) 评论(1) 推荐(0) 编辑
摘要:## 一、线程池的好处 ### 1、为什么需要使用线程池 - 反复创建线程开销大**(内存和垃圾回收)** - 过多的线程会导致内存消耗 - 线程池可以规避上述问题,它可以复用每一个线程,并且还可以控制线程总量,便于管理 ### 3、不使用线程池会怎么样 - 每次创建和销毁线程都需要资源的`开销`, 阅读全文
posted @ 2023-06-13 22:04 Java知者 阅读(439) 评论(0) 推荐(0) 编辑
摘要:## 一、死锁的定义&危害 ### 1、死锁是什么 - 发生在`并发`中 - `互不想让`:当两个(或更多)线程(或进程)`相互持有对方所需要的资源`,又不主动释放,导致所有人都无法继续前进,导致程序陷入无尽的阻塞,这就是死锁。 ![](https://img2023.cnblogs.com/blo 阅读全文
posted @ 2023-06-03 11:48 Java知者 阅读(66) 评论(0) 推荐(0) 编辑
摘要:> 从前,有一对夫妻,男的叫牛郎,女的叫织女,他们很好地传承了中华民族的谦让美德,每次吃饭时都会优先考虑对方,如果对方饿的话,就让给对方吃,等对方吃饱了自己才吃,这种美德本身是好的,但是如果一味的谦让,就有可能都吃不上饭… ### 1. 吃饭逻辑 - 有两个就餐者,一个是牛郎,一个是织女; - 就餐 阅读全文
posted @ 2023-06-03 11:48 Java知者 阅读(73) 评论(0) 推荐(0) 编辑
摘要:> 本文主要讲述死锁的一个经典案例—哲学家就餐问题,并对该问题进行修复。 ### 1. 问题描述 ![哲学家就餐问题](https://img2023.cnblogs.com/blog/1220983/202306/1220983-20230603114749562-1769304662.png) 阅读全文
posted @ 2023-06-03 11:47 Java知者 阅读(308) 评论(0) 推荐(0) 编辑
摘要:> 本文主要讲述死锁的一个经典案例—银行转账问题,并对该问题进行定位、修复。 ### 1. 问题说明 当账户A对账户B进行转账时, - 首先需要获取到`两把锁`:账户A和账户B的锁。 - 获取两把锁成功,且余额大于0,则扣除转出人的余额,并增加收款人的余额,而且这些操作都是在一个`原子操作`中 - 阅读全文
posted @ 2023-06-03 11:47 Java知者 阅读(417) 评论(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知者 阅读(130) 评论(0) 推荐(0) 编辑
摘要:### 0. 为什么需要单例模式? - 节省内存和计算 - 保证结果正确 - 方便管理 **使用场景:** ![](https://img2023.cnblogs.com/blog/1220983/202306/1220983-20230603114517917-2115984051.png) ## 阅读全文
posted @ 2023-06-03 11:45 Java知者 阅读(370) 评论(0) 推荐(0) 编辑
摘要:### 1. synchronized 关键字的作用 synchronized 关键字解决的是多个线程之间访问资源的同步性,用于保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果。 ### 2. 作用范围 - 修饰代码块:大括号括起来的代码,作用于调用的对象。 - 修饰方法:整个方 阅读全文
posted @ 2023-06-03 11:44 Java知者 阅读(62) 评论(0) 推荐(0) 编辑
摘要:## 一、volatile 关键字的适用与不适用场景 ### 1. 什么是 volatile - volatile是一种同步机制,类似于 Lock 和 Synchronized ,但是他更轻量级,因为使用 volatile 并不会发生上下文切换等开销很大的行为。 - 如果一个变量被volatile修 阅读全文
posted @ 2023-06-03 11:44 Java知者 阅读(25) 评论(0) 推荐(0) 编辑
摘要:## 一、概念 ### 1. 什么是线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。 通俗来说就是:不管业务中遇到怎么的多个线程访问某个 阅读全文
posted @ 2023-06-03 11:43 Java知者 阅读(262) 评论(0) 推荐(0) 编辑
摘要:## 一、需要 UncaughtExceptionHandler 的原因 ### 1. 主线程可轻松的发现异常,子线程的异常比较隐蔽,难以发现 程序运行时,子线程发生了异常,并不影响主线程,也不会终止主线程的程序,主线程将继续执行,这时候子线程的异常可能就不会被察觉,就使得子线程的功能出了问题,但没 阅读全文
posted @ 2023-06-03 11:42 Java知者 阅读(938) 评论(0) 推荐(1) 编辑
摘要:![线程各属性纵览](https://img2023.cnblogs.com/blog/1220983/202306/1220983-20230603114109107-477345835.png) 如上图所示,线程有四个属性: - 线程ID - 线程名称 - 守护线程 - 线程优先级 ### 1. 阅读全文
posted @ 2023-06-03 11:41 Java知者 阅读(478) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示