
JUC类汇总和学习
文章平均质量分 89
JUC(Java Util Concurrency)是Java并发包,它提供了一系列的类和接口来帮助开发者更容易地编写并发代码
jpq+
无bug无江湖
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Semaphore信号量限制访问
Semaphore是一个计数信号量,用于控制同时访问特定资源的线程数量,以维护资源的访问控制和确保系统的线程安全。Semaphore可以被视为一个包含若干许可(permit)的集合,线程需要先获取许可才能执行受控操作,执行完毕后归还许可,从而允许其他等待的线程继续执行。主要方法包括:acquire():尝试获取一个许可,如果没有可用许可,则阻塞直到有其他线程释放许可。release():释放一个许可,增加信号量的计数,如果其他线程正在等待许可,则唤醒其中一个线程。原创 2024-05-30 16:03:43 · 595 阅读 · 0 评论 -
ReentrantReadWriteLock类
同时其还实现了Serializable接口,表示可以进行序列化,在源代码中可以看到ReentrantReadWriteLock实现了自己的序列化逻辑。在某些情况下,使用ReentrantReadWriteLock可能更高效,因为它允许多个线程同时读取共享资源,从而减少了锁竞争的可能性。ReentrantReadWriteLock是一个读写锁,它允许多个读操作同时进行,但在写操作时会阻止其他所有读和写操作。ReadThread和WriteThread是自定义的线程类,它们分别代表读线程和写线程。原创 2024-05-04 16:35:13 · 894 阅读 · 0 评论 -
ReentrantLock详解
ReentrantLock 是 Java 并发包(java.util.concurrent.locks)中的一个可重入锁实现,它提供了比 synchronized 关键字更灵活、功能更丰富的线程同步机制。ReentrantLock类内部总共存在Sync、NonfairSync、FairSync三个类,NonfairSync(非公平锁)与FairSync(公平锁)类继承自Sync类,Sync类继承自AbstractQueuedSynchronizer抽象类。原创 2024-04-19 10:45:48 · 1069 阅读 · 0 评论 -
Atomic原子类
Atomic类位于java.util.concurrent.atomic包下,它们利用CAS(Compare-And-Swap)操作来保证线程安全性,而无需使用传统的锁机制。这些类提供了一种轻量级的同步机制,适用于多线程环境下对共享变量的高效更新。原创 2024-04-06 10:06:40 · 1338 阅读 · 0 评论 -
UnSafe类的方法
由于 Unsafe 类提供了类似 C 语言指针的操作能力,过度或不正确使用可能会增加程序出错的风险,导致 Java 语言变得不再“安全”。因此,在使用 Unsafe 类时必须非常谨慎,并确保充分理解其工作原理和潜在风险。值得注意的是,Unsafe 类的实现依赖于本地方法(Native Method),这些本地方法是用其他编程语言编写的,并且与操作系统底层紧密相关。原创 2024-04-06 08:19:38 · 819 阅读 · 0 评论 -
CAS快速入门
CAS(Compare-And-Swap)是一种原子指令,用于在多线程环境下实现无锁的数据更新。它的作用是让CPU先比较两个值是否相等,然后原子地更新某个位置的值。CAS操作需要输入三个参数:内存位置、旧值(期望操作前的值)和新值。在操作期间,先比较内存位置的值是否等于旧值,如果相等,则将其更新为新值;如果不相等,则不进行交换。CAS操作具有原子性,因此多线程并发使用CAS更新数据时,可以不使用锁。JDK中大量使用了CAS来实现无锁的数据结构,如AtomicInteger等。原创 2024-04-06 08:19:15 · 762 阅读 · 0 评论