Java并发编程
文章平均质量分 56
Wim同学
no pains , no gains
展开
-
生产者消费者的多种方式实现
前言:生产者消费者模式是工作中多线程开发很常用的一种模式,也是笔试面试高频考点1.使用阻塞队列实现(阻塞队列有很多,如ArrayBlockingQueue,LinkedBlockingQueue,PriorityBlockingQueue,SynchronousQueue)/** * 使用阻塞队列实现 * * @author m969130721@163.com * @da...原创 2018-10-25 10:19:45 · 171 阅读 · 0 评论 -
并发tools之栅栏CyclicBarrier
前言:CyclicBarrier翻译过来就是:循环的屏障,这个类是一个可以重复利用的屏障类.它允许一组线程相互等待,直到全部到达某个公共屏障点,然后所有的这组线程再同步往后执行.await()函数每被调用依次,计数便会减少1,并阻塞当前线程.当计数减至0,阻塞解除. CountDownLatch和CyclicBarrier的区别?1.CountDownLatch的作用是允许...原创 2018-10-25 10:31:33 · 141 阅读 · 0 评论 -
并发tools之闭锁CountDownLatch
前言:CountDownLatch是Java并发编程很好用的一个tools,其作用是主线程等待子线程都完成后主线程才开始执行,比如说可以用来计算子线程任务完成后共耗时多少,或者一个游戏场景所有玩家准备后主线程才开始游戏等等CountDownLatch的功能和Future的get()方法类似,只有任务完成了才返回,不然一直阻塞.CountDownLatch内部有个计数器,在新建这个闭...原创 2018-10-25 10:49:28 · 208 阅读 · 0 评论 -
并发tools之信号量Semaphore
前言:信号量可以控制某个资源可以被同时访问的个数,通过构造函数设定一定数量的许可调用acquire()获取一个许可,如果没有就等待调用release()释放一个许可. 实战:(下面例子只允许5个线程同时进入执行acquire()和release()之间的代码)public class SemaphoreDemo { public static void mai...原创 2018-10-25 11:00:56 · 141 阅读 · 0 评论 -
NIO学习总结与实战
前言Java NIO 是从jdk1.4版本开始引入的一个新的IO API,可以代替标准的JavaIO API.你可以称它为NEW IO亦或non-blocking IO,NIO 支持面向缓冲区,基于通道的IO操作,NIO以更加高效的方式进行文件的读写操作。NIO与IO的区别NIOIO面向缓冲区(Buffer)面向流(Stream)非阻塞IO(non-blockin...原创 2018-10-26 17:26:29 · 1052 阅读 · 1 评论 -
并发tools之交换者Exchanger
一.简介 Exchanger就是交换者的意思,用于之间线程间协作交换彼此数据,其核心依靠一个exchange(V v)方法,当两个线程调用exchange方法时候,会将传入的数据传递给彼此,当其中一个线程到达exchange方法时,另一个线程还没到达exchange,则此线程阻塞到另一个线程执行exchange,就是说Exchanger提供一个同步点,在这个同步点上交换彼此的数据。如果另一个...原创 2018-12-06 19:44:41 · 387 阅读 · 0 评论