java并发
文章平均质量分 65
字节小站
这个作者很懒,什么都没留下…
展开
-
Java并发系列之二 一道好玩有趣的多线程面试题
1. 一道好玩有趣的面试题Java求职中往往会碰到这样的面试题。请实现多线程交替打印0和1的程序。看到这道题目,凭着程序员的第六感,我们很容易联想到消费者和生产者模式。他们之间有很大的相似之处啊。生产者线程负责往仓库生产物资,当仓库的物资物满为患的时候,阻塞线程停止生产,等待消费者线程消费物资后唤醒生产者线程。消费者线程负责从仓库拿出物资,当仓库没有物资的时候阻塞线程停止消费,等待生产者线...原创 2018-06-05 09:34:08 · 339 阅读 · 0 评论 -
Java并发系列之三 ReadWriteLock源码解析
1. ReadWriteLock接口ReadWriteLock是一个java接口,它并没有继承Lock接口。提供了readLock()和writeLock(),分别返回一个读锁和写锁。public interface ReadWriteLock { Lock readLock(); Lock writeLock();}2. ReentrantReadWri...原创 2018-06-09 18:31:57 · 326 阅读 · 0 评论 -
Java并发系列之五 CountDownLatch源码解析
CountDownLatch概述引用一段CountDownLatch类注释 A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.CountDownLatch是一个同步辅助类...原创 2018-06-09 21:47:28 · 231 阅读 · 0 评论 -
Java并发系列之六 CyclicBarrier源码解析
CyclicBarrier概述CyclicBarrier字面意思是可循环使用的线程屏障。CyclicBarrier的功能和CountDownLatch功能有点相似。都能实现线程间相互等待,直到线程做完某些任务,唤醒等待线程。那么既然他们功能类似,提供一种解决方案不就行了吗,为什么还要再提供一个呢。原因是他们的侧重点其实还不一样。在CountDownLatch中我们把线程归类为两种,一类是工...原创 2018-06-10 08:51:15 · 272 阅读 · 0 评论 -
Java并发系列之四 Condition源码解析
1. Condition的应用在上一篇文章我们用Condition实现了线程交替打印0和1功能。调用Condition的await(),能实现将当前线程释放获取到的相应的锁。并且阻塞当前线程,直到其他线程调用了同一Condition的signal(),如果有多个线程在同一个Condition上调用了await()方法,那么这些线程将会被封装成一个Node节点,加入到Condition内部维护的...原创 2018-06-10 08:53:55 · 377 阅读 · 0 评论 -
Java并发系列之7 深入理解线程池ThreadPoolExecutor
1. 初识线程池线程池解决了如下两个问题当执行大量的异步任务时,线程池可以减少每个任务的调用切换开销从而提高应用性能对执行的线程,和要被执行的任务,提供了管理的方法此外每个线程池还维护了一些基本统计信息,比如已完成任务的数量2. ThreadPoolExecutor的简单使用我们创建一个线程池对象ThreadPoolExecutor,让线程池执行10个打印任务,输出当前任务名称以及...原创 2019-07-07 18:11:23 · 455 阅读 · 0 评论 -
Java并发系列之八Semaphore
前面我已经讲解过了CountDownLatch和CyclicBarrier。本篇我们来讲解下Semaphore。Semaphore是指信号量,在计算机的世界里信号量可以使用在数据竞争的场景中。在生活中交通信号灯可以比作现实世界中的Semaphore。Semaphore的作用就是允许或者禁止。比如说红灯禁止通行,绿灯允许通行。计算机世界里的Semaphore会持有多张许可证,举个例子有10张许可证...原创 2019-07-16 12:01:53 · 194 阅读 · 0 评论