6) 2021-11-18 学习记录,以面试回答口吻记录,拒绝八股 一.阻塞队列 二.JUC常用工具类

一.阻塞队列

1 SynchronousQueue
通过信息的传递实现生产者和消费者的阻塞和唤醒 new TransferQueue()
线程池的实现
存储阻塞状态下的消费者和生产者线程 SynchronousQueue()
2 LinkedTransferQueue
无界阻塞队列 LinkedBlockingQueue + TransferQueue
3 LinkedBlockingQueue
基于链表结构的正常队列
4 LinkedBlockingDeque
双向链表组成的队列,支持双向插入和删除,一定程度上可以解决多线程的竞争问题
Fork/Join 工作窃取
5.阻塞队列的使用
责任链模式,构建一条执行链路

二.JUC常用工具类

1 CountDownLatch
await countDown
比如设置的是5 ,意思就是说 5个线程基于共享锁原理,执行完任务之后,await()生效线程阻塞,都调用了countDown然后计数减为0,同时唤醒线程执行
用的是 基于 共享锁 AQS
类似于 state计数做减数操作
2 Semaphora
限流器限制资源的访问
抢占到一个令牌就通行,多个线程抢占到锁 acquire 数量-1 release 数量+1 可以同时释放多个令牌
3,Cyclibarrier
可重复的栅栏,类似于多个线程await(), 另外一个线程countDown来唤醒。
不是基于共享锁 每个parties调用await 类似都到了起点了就可以起跑了
可以reset()重复使用栅栏

Guess you like

Origin blog.csdn.net/qq_45095838/article/details/121432316