JUC
文章平均质量分 62
edanhuang
知道的越多不知道的越多
展开
-
【juc学习之路第9天】屏障衍生工具
在大部分的应用环境下,很多资源实际上都属于有限提供的,例如:服务器提供了4核8线程的CPU资源,这样所有的应用不管如何抢占,最终可以抢占的也只有这固定的8个线程来进行应用的处理,实际上这就属于一种有限的资源。在面对大规模并发访问的应用环境中,为了合理的安排有限资源的调度,在JUC中提供了 Semaphore(信号量)处理类。范例:使用信号量控制叫号系统CountDownLanch是一种基于倒计数同步的线程管理机制,例如:主线程里面创建了三个子线程,主线程必须在这三个子线程全部执行完成之后再继续向下执行,原创 2022-06-27 21:34:46 · 252 阅读 · 0 评论 -
【juc学习之路第8天】Condition
依据时间戳实现锁机制,用于解决读写锁在读写资源线程数量不平衡时,资源抢占不公平的情况。在该类中支持有三种锁的处理模式,分别为写锁、悲观锁、乐观锁。每一个完整的StampedLock是由版本和模式两个部分所组成,在获取相关锁时会返回有一个数字标记戳,用于控制锁的状态,并利用该标记戳实现解锁的处理。在最早学习到多线程技术的时候,会使用Object类之中提供的 wait、notify方法进行等待与唤醒的处理,而后在传统的Thread 类之中,又提供了暂停和恢复的功能(这个功能已经被废除),Condition实现了原创 2022-06-25 14:15:59 · 194 阅读 · 0 评论 -
【juc学习之路第7天】ReentrantLock与ReentrantReadWriteLock
线程锁位于jucl下,主要有两种接口类型的锁:Lock:包含以下三种形式锁的类型:公平锁:不同的线程获取锁的过程是公平的非公平锁:不同线程获取锁的过程是不公平的,允许竞争获取。可重入锁:同一个锁可以被一个线程多次获取,避免死锁的出现。ReadWhiteLock: 提供读锁和写锁,读时锁共享,修改时独占。ReentrantLock互斥锁或叫独占锁,是Lock的实现类,意思是一旦获取到锁之后,其他线程不允许再操作(无论读或写),synchronized也是互斥锁。先观察下Re原创 2022-05-25 23:33:34 · 109 阅读 · 0 评论 -
【juc学习之路第6天】并发计算器与线程随机因子
并发计算器有些时候不想用原子操作类但还想实现安全的计算,可以使用并发计算器,有两种计算器:累加器:DoubleAccumulator、LongAccumulator (需要初始化)加法器:DoubleAdder、LongAdderpublic class Main { public static void main(String[] args) throws Exception { DoubleAccumulator da = new DoubleAccumulator(原创 2022-05-24 23:21:31 · 112 阅读 · 0 评论 -
【juc学习之路第5天】引用原子类和属性修改器
引用原子类包含三种:AtomicReference: 引用类型原子类。实现原理:CAS。compareAndSet():无法通过匿名对象进行比较,因为比较的内容是地址而不是Obejct.equals()。AtomicStampedReference: 带有引用版本号的原子类。实现原理:CAS同时C版本号。compareAndSet():比较内容地址的同时对版本号做出比较。AtomicMarkableReference: 带有标记的引用原子类。实现原理:CAS同时C标记。compar原创 2022-05-23 22:47:53 · 177 阅读 · 0 评论 -
【juc学习之路第4天】基本原子类与数组原子类
基本原子类提供三个:AtomicInteger: public class AtomicInteger extends Number implements java.io.SerializableAtomicLong: public class AtomicLong extends Number implements java.io.SerializableAtomicBoolean: public class AtomicBoolean implements java.io.Serializab原创 2022-05-22 23:24:31 · 198 阅读 · 0 评论