
JUC
正月看飞雪
这个作者很懒,什么都没留下…
展开
-
JUC - SynchronousQueue
SynchronousQueue: 同步队列的作用类似于一种匹配原则,它只能放一个东西进去。 场景: 一个线程放数据进去,另一个线程去取。放进去的线程放进去以后, 就要等待消费者去取, 只有取出来了才可以继续放进去,同时,消费者也是只有等生产者放进去才可以取, 如果没有, 就只有继续等待。 SynchronousQueue<String> queue = new SynchronousQueue<>(); new Thread(() -> {原创 2021-07-28 10:45:08 · 202 阅读 · 0 评论 -
JUC - ReentrantReadWriteLock(读写锁)
ReentrantReadWriteLock: 在读的时候可以多个线程一起读, 在写的时候,只能一个线程写。 场景: 用Map模拟一个缓存,put方法是用写锁加锁, get用读锁加锁。 public class Test4 { public static void main(String[] args) { MyCache myCache = new MyCache(); for (int i = 1; i <= 5; i++) { fi原创 2021-07-28 10:32:17 · 147 阅读 · 0 评论 -
JUC辅助类-(countDownLatch,cyclicBarrier,semaphore,BlockingQueue)
ava1.5引入工具类有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 1. countDownLatch countDownLatch的实现是一个计数器, 作用是使一个线程等待其他线程执行结束后才继续执行。 使用方法, 先设置一个数, 每次减少一, 等减少到0就继续执行 public static void main(String[] args) throws InterruptedException { //必须要执行任务原创 2021-07-28 10:28:35 · 250 阅读 · 0 评论