摘要:
含义 cas: compare and swap 比较和交换,如果期望值和当前值相等,那么则设置为新值,否则不做任何操作。 原理 cas操作保证了共享变量的原子性,主要是通过unsafe类。Unsafe是CAS的核心类。因为Java无法直接访问底层操作系统,而是通过本地(native)方法来访问。不 阅读全文
摘要:
缓存雪崩:指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。 缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。 缓存击穿:指热点key在某个时间 阅读全文
摘要:
 阅读全文
摘要:
scheduleAtFixedRate 该⽅法在 initialDelay 时⻓后第⼀次执⾏任务,以后每隔 period 时⻓,再次执⾏任务。注意,period是从任务开始执⾏算起的。开始执⾏任务后,定时器每隔period时⻓检查该任务是否完成,如果完成则再次启动任务,否则等该任务结束后才再次启动任 阅读全文
摘要:
类 作用 Semaphore 限制线程数量 Exchanger 两个线程交换数据 CountDownLatch 递减屏障,线程等待直到计数器减为0时开始工作 CyclicBarrier 循环屏障,等屏障的线程数达到初始化值时,执行自定义的任务 Phaser 增强的CyclicBarrier Coun 阅读全文
摘要:
CopyOnWrite容器即写时复制的容器,当我们往⼀个容器中添加元素的时候,不直接往容器中添加,⽽是将当前容器进⾏copy,复制出来⼀个新的容器,然后向新容器中添加我们需要的元素,最后将原容器的引⽤指向新容器,这个过程中是使用ReentrantLock加锁了的。这样做的好处在于,我们可以在并发的场 阅读全文
摘要:
ConcurrentHashMap1.8之前提供了⼀种粒度更细的加锁机制来实现在多线程下更⾼的性 能,这种机制叫分段锁(Lock Striping)。 提供的优点是:在并发环境下将实现更⾼的吞吐量,⽽在单线程环境下只损失⾮常 ⼩的性能。 可以这样理解分段锁,就是将数据分段,对每⼀段数据分配⼀把锁。当 阅读全文
摘要:
AQS:AbstractQueuedSynchronizer 抽象队列同步器 抽象:抽象类,只实现⼀些主要逻辑 定义一些默认的模板方法,有些⽅法由⼦类实现; 队列:使⽤先进先出(FIFO)队列存储数据; 同步:实现了同步的功能。 核心思想:被请求的共享资源空闲时,首先获得共享资源锁的线程被设置为工作 阅读全文