
java
文章平均质量分 81
梧-
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JUC包下的一些常见类
当读操作远远高于写操作时,这时候使用读写锁让读-读可以并发,提高性能。类似于数据库中的 select ... from ... lock in share mode提供一个 数据容器类 内部分别使用读锁保护数据的 read() 方法,写锁保护数据的 write() 方法测试 读锁-读锁 可以并发输出结果,从这里可以看到 t2 锁定期间,t1 的读操作不受影响测试 读锁-写锁 相互阻塞运行结果:读锁获取到锁后,休眠1秒,写锁尝试获取锁,失败,等读锁释放锁后,写锁才获取到锁。测试 写锁-写锁 相互阻塞。原创 2025-09-04 15:30:00 · 1092 阅读 · 0 评论 -
AQS原理
全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架getState - 获取 state 状态setState - 设置 state 状态compareAndSetState - 使用 cas 机制(为了防止多个线程读来修改 state 时,state 的线程安全,保证原子性,重试失败会进入队列等待)设置 state 状态独占模式是只有一个线程能够访问资源,而共享模式可以允许多个线程访问资源。原创 2025-09-03 15:30:00 · 613 阅读 · 0 评论 -
ThreadPoolExecutor类详解
线程池实现类是Executor框架最核心的类。ExecutorService:线程池的最基本的接口,里面定义了提交任务,包括关闭线程池的方法。ScheculeExecutorService: ExecutorService 的扩展接口,在基础线程池的功能上,新增了任务调度的功能,可以定时去执行任务。ThreadPoolExecutor : ExecutorService 最基础的实现,非常重要!!!原创 2025-09-01 14:37:01 · 1422 阅读 · 0 评论 -
Java线程有几种状态?5种?还是6种?
Java线程状态可从操作系统和Java API两个层面理解:操作系统层面分为初始状态、可运行状态(就绪)、运行状态、阻塞状态和终止状态5种;Java API层面则细分为NEW、RUNNABLE(包含系统层的可运行/运行/阻塞)、BLOCKED、WAITING、TIMED_WAITING和TERMINATED 6种状态。代码示例通过不同线程操作(sleep、join、同步锁等)展示了各状态的转换,运行结果验证了状态的实际表现。两种分类方式本质是对同一机制的不同抽象层级描述。原创 2025-08-27 16:10:14 · 403 阅读 · 0 评论 -
java线程6种状态之间的转化详解
之前介绍了Java线程俩种层面的各种状态,现在来详细了解一下Java API层面六种状态是怎么变化的。假设有线程 Thread t。原创 2025-08-29 14:55:11 · 1076 阅读 · 0 评论 -
快速搞懂volatile关键字的作用
volatile 可以用来修饰成员变量和静态成员变量,他可以避免线程从自己的工作缓存中查找变量的值,必须到主存中获取它的值,线程操作 volatile 变量都是直接操作主存。2. 因为 t 线程要频繁从主内存中读取 run 的值,JIT 编译器会将 run 的值缓存至自己工作内存中的高速缓存中, 减少对主存中 run 的访问,来提高效率。3. 1 秒之后,main 线程修改了 run 的值,并同步至主存,而 t 是从自己工作内存中的高速缓存中读取这个变量 的值,结果永远是旧值。它主要解决了什么问题?原创 2025-08-30 18:00:22 · 312 阅读 · 0 评论