随笔分类 -  多线程

摘要:线程池,工作中用的非常多的一个类。当线程池化,我们都知道线程的开启与销毁很消耗性能,所以在一些框架中都将线程进行池化,比如Redis连接池、数据库连接池等等。线程池的核心思想是任务的提交与执行区分开 基本属性 线程池有哪些状态?线程池的线程数和状态是如何表示的?这些都可以从类的成员变量体现出来 // 阅读全文
posted @ 2021-07-21 13:44 扭不动的奥利奥 阅读(110) 评论(0) 推荐(0)
摘要:特点 这是一个优先级队列,该队列中的元素必须是Compartor或者Comparable的实现类才可以; 这是一个无界队列,所以入队不需要等待,直接将元素写入即可,出队时如果队列中没有元素需要在Condition上等待,这样也说明了该队列只需要一个Condition即可; 该类的底层使用的是数组,成 阅读全文
posted @ 2021-07-18 10:51 扭不动的奥利奥 阅读(101) 评论(0) 推荐(0)
摘要:延迟队列,顾名思义,是一个可延迟的队列,这是一个无界队列,其最大的特点就是队列中的数据按照设定的等待时间长短排序,队列的头部是剩余时间最短的元素。内部组合了PriorityQueue优先队列,队列的操作都是依靠该队列完成的;延迟队列的元素必须是Delayed的子类,而Delayed是Comparab 阅读全文
posted @ 2021-07-17 11:11 扭不动的奥利奥 阅读(130) 评论(0) 推荐(0)
摘要:说了CountDownlatch就不得不说下CyclicBarrier,它们俩的功能是大同小异的。CyclicBarrier被称为同步屏障,它可以使一定数量的线程反复在屏障处汇集,当线程到达屏障处调用await方法,该线程就会在此处阻塞,直到所有线程都达到屏障,那么屏障就会打开,所有线程就会继续执行 阅读全文
posted @ 2021-07-15 16:57 扭不动的奥利奥 阅读(223) 评论(0) 推荐(0)
摘要:CountDownLatch一般称为“倒计数器”,比如有个任务A,需要等其他几个任务执行完之后才可以执行;或者有这么一个业务:在解析Excel时,需要将Excel中的所有数据解析并校验完主线程才可以继续接下来的任务,这时候就可以使用这个类 基本结构 这个类的功能也是在AQS的基础上实现的,但它与之前 阅读全文
posted @ 2021-07-15 16:13 扭不动的奥利奥 阅读(250) 评论(0) 推荐(0)
摘要:list 是我们平时工作中应用最多的集合之一,但ArrayList是线程不安全的如果想使用线程安全的话可以使用Vector,这个类虽然是线程安全的,但效率比较低下,在JUC包中还有一个类可以代替Vector,那就是今天的主角:CopyOnWriteArrayList——写时复制,看名字应该可以猜到在 阅读全文
posted @ 2021-07-14 17:28 扭不动的奥利奥 阅读(94) 评论(0) 推荐(0)
摘要:从这个类名应该就能猜到这是一个读写锁,当我们在读多写少的场景下可以使用这个类来控制并发。 读和写是互斥的,当个写的线程获取到锁时,其他写和读的线程都无法获取锁,只能等该写线程释放锁之后才可以。 基本结构 ReentrantReadWriteLock实现了ReadWriteLock接口,这个接口只有两 阅读全文
posted @ 2021-07-13 18:07 扭不动的奥利奥 阅读(71) 评论(0) 推荐(0)
摘要:给代码加锁可以使用synchronized进行加锁,这种加锁和释放锁是隐式的。也可以使用ReentrantLock进行显示的加锁和释放锁,分别对应lock和unlock方法。 ReentrantLock是一个互斥锁,分为公平锁和非公平锁。当我们创建一个ReentrantLock时默认是非公平锁,因为 阅读全文
posted @ 2021-07-13 09:57 扭不动的奥利奥 阅读(153) 评论(0) 推荐(0)
摘要:目录: 1. 锁 2. AQS基本介绍 2.1 成员变量 2.2 节点 2.3 不可变方法 2.4 需要重写的方法 2.5 模板方法 2.5.1 acquire 2.5.2 release 2.5.3 acquireInterruptibly 2.5.4 acquireShared 2.5.5 re 阅读全文
posted @ 2021-07-11 19:56 扭不动的奥利奥 阅读(89) 评论(0) 推荐(0)