
java并发编程之美
文章平均质量分 58
橘子味的阳光
难得世界那么美
展开
-
java多线程面试宝典
1. 现在有线程 T1、T2 和 T3。你如何确保 T2 线程在 T1 之后执行,并且 T3 线程在 T2 之后执行?这个线程面试题通常在第一轮面试或电话面试时被问到,这道多线程问题为了测试面试者是否熟悉 join 方法的概念。答案也非常简单——可以用 Thread 类的 join 方法实现这一效果。t.join()方法阻塞调用此方法的线程(calling thread),直到线程t完成...原创 2018-09-04 17:51:25 · 1629 阅读 · 0 评论 -
手撕ThreadPoolExecutor及子线程池
线程池作用降低资源消耗(重复利用已创建的线程)提高响应速度(任务到达时,不需要等待创建线程)提高线程的可管理性(线程是稀缺资源,线程池可以进行统一分配、调优和监控)不用线程池如果一个线程的时间非常长,就没必要用线程池了(不是不能作长时间操作,而是不宜。),况且我们还不能控制线程池中线程的开始、挂起、和中止。Executor线程池构造4种线程池Java通过Executors(jdk...原创 2018-10-08 17:15:18 · 445 阅读 · 0 评论 -
信号量-Semaphore控制并发访问数(待完善)
Semaphore限流在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。Semaphore 只对可用许可的号码进行计数,并采取相应的行动。拿到信号量的线程可以进入代码,否则就等待。JDK online dochttp://tool.oschina.net/apidocs/apidoc?api=jdk-...原创 2019-01-18 11:00:04 · 262 阅读 · 0 评论 -
同步器2-CyclicBarrier可循环障碍物
场景公司聚餐,全部到齐后才可以吃饭(同步),假如人员没有到齐,先到的同事需要等待(阻塞)全部人员到齐后,先拍照留念,在吃饭其他应用场景:多线程计算之后合并结果实现第一种构造方法import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;import ...原创 2019-01-19 10:16:54 · 186 阅读 · 0 评论 -
Exchanger-两个线程进行数据交换
场景绑架案:一手交钱,一手交人校对工作codepackage com.zjy.thread;import java.util.concurrent.Exchanger;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class Exchanger...原创 2019-01-19 11:08:50 · 183 阅读 · 0 评论 -
同步器1-CountDownLatch倒计时计数器
描述有一个任务需要等待其他几个人物执行完毕后才能执行import java.util.concurrent.CountDownLatch;public class CountDownLatchDemo { public static void main(String[] args){ final int num = 2; //两个任务后 ...原创 2019-01-19 11:48:28 · 306 阅读 · 0 评论