摘要: ## 一、什么是不可变性(Immutable) - 如果对象在`被创建后,状态就不能被修改`,那么它就是不可变的 - 这个对象不能被修改指: - 对象指向(引用)不可变 - 字段不可变 - 成员变量不可变 案列演示: *person对象,age和name属性都不能再变* ```java /** * 阅读全文
posted @ 2023-06-13 22:08 Java知者 阅读(53) 评论(0) 推荐(0) 编辑
摘要: ## 一、原子类简介 ### 1 什么是原子类 Java中提供了一些原子类,原子类包装了一个变量,并且提供了一系列对变量进行原子性操作的方法。原子性的意思是对于一组操作,要么全部执行成功,要么全部执行失败,不能只有其中某几个执行成功。在多线程的情况下能够保证操作 `不会被中断`,从而能保证并发安全 阅读全文
posted @ 2023-06-13 22:07 Java知者 阅读(1165) 评论(0) 推荐(0) 编辑
摘要: ### 1. 简介 CAS的底层调用native方法,最终是利用CPU的一个特殊指令,该指令由CPU保证了原子性,而且包含多个操作,比如先比较再更新。 原理: - (1)需要读写的内存值(V)、原值(A)和新值(B)。如果V的值与原值A相匹配,那么把B设置给V,否则处理器不做任何操作。 - (2)无 阅读全文
posted @ 2023-06-13 22:07 Java知者 阅读(44) 评论(0) 推荐(0) 编辑
摘要: ## 一、Lock接口 ### 1 Lock简介&地位&作用 - 锁是一种工具,用于控制对`共享资源`的访问 - Lock和synchronized是最常见的两个锁,他们都能够达到线程安全的目录,但是使用和功能上又有较大的不同 - Lock接口最常见的实现类就是`ReentrantLock` - 通 阅读全文
posted @ 2023-06-13 22:06 Java知者 阅读(830) 评论(0) 推荐(0) 编辑
摘要: ## 一、ThreadLocal 简介 ### 1. ThreadLocal 是什么? ThreadLocal 字面意思是本地线程,其实更准确来说是线程局部变量,线程类 Thread 有个变量叫做 threadLocals,其类型就是ThreadLocal.ThreadLocalMap 类型,他其实 阅读全文
posted @ 2023-06-13 22:04 Java知者 阅读(154) 评论(1) 推荐(0) 编辑
摘要: ## 一、线程池的好处 ### 1、为什么需要使用线程池 - 反复创建线程开销大**(内存和垃圾回收)** - 过多的线程会导致内存消耗 - 线程池可以规避上述问题,它可以复用每一个线程,并且还可以控制线程总量,便于管理 ### 3、不使用线程池会怎么样 - 每次创建和销毁线程都需要资源的`开销`, 阅读全文
posted @ 2023-06-13 22:04 Java知者 阅读(277) 评论(0) 推荐(0) 编辑