JUC
泥坑腕豪
腕豪
展开
-
手写一个简易的自旋锁
自旋锁,通俗的将就是当一个人上厕所,将厕所门锁上,慢慢释放。另一个人也要来上厕所,但是厕所被前一个人用着,只能不断地等待,这就叫自旋。代码如下package com.demo;import java.util.Timer;import java.util.TimerTask;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicReference;/** * @program: al.原创 2021-07-06 16:58:08 · 55 阅读 · 0 评论 -
多线程生产消费的两种写法
一、第一种首先是较为简单的一种,利用Lock和Condition实现代码如下package com.demo;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * @program: algorithm * @description: * @author: Mr.原创 2021-07-01 22:19:26 · 67 阅读 · 0 评论 -
Semaphore的使用
Semaphore就是多对多的问题,最形象的就是抢车位。多个线程抢多个资源例:停车位,当有10个车位20辆车时。总会有10辆车没有车位。只能等一辆车走之后才能有一辆车可以停车。package com.demo;import java.util.concurrent.Semaphore;import java.util.concurrent.TimeUnit;/** * @program: algorithm * @description: * @author: Mr.XYC * @.原创 2021-07-01 11:28:38 · 74 阅读 · 0 评论 -
手写一个简易的自旋锁
自旋锁,通俗来讲就是有一个人去上厕所,把厕所门锁上了,然后发射。另外也有一个人来上厕所,但是厕所门被锁了,只能等前一个人上完把门打开后他才能上,这个不断等待的过程就是自旋。例子:package com.demo;import java.util.Timer;import java.util.TimerTask;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicReference;/.原创 2021-07-01 10:48:14 · 196 阅读 · 0 评论 -
利用ReentrantReadWriteLock写一个简易的缓存
缓存必不可少的三个方法添加读取移除只写了前两个方法,最后一个脑补因为涉及到了读和写,所以采用了ReentrantReadWriteLock来实现读写分离,实现读写互斥,写写互斥,读读不互斥代码如下package com.demo;import java.util.HashMap;import java.util.Map;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Reentran.原创 2021-06-30 22:16:18 · 85 阅读 · 0 评论 -
CyclicBarrier的使用
例子:公司要开会议,但是必须所有人到达了才能会开会。package com.demo;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/** * @program: algorithm * @description: * @author: Mr.XYC * @create: 2021-06-30 22:03 **/public class Cycl原创 2021-06-30 22:11:32 · 63 阅读 · 0 评论 -
CountDownLatch的使用
CountDownLatch相当于一个倒计时例:结合枚举的一个小栗子package com.demo;import java.util.concurrent.CountDownLatch;/** * @program: algorithm * @description: * @author: Mr.XYC * @create: 2021-06-30 21:45 **/public class CountDownLatchDemo { public static void ma原创 2021-06-30 21:58:31 · 68 阅读 · 0 评论