
Java并发
诸般世界
这个作者很懒,什么都没留下…
展开
-
引子:传统同步类容器及典型ConcurrentModificationException异常
同步类容器(Vector、HashTable),同步类容器的同步功能都是由JDK的Collections.synchronized******等工厂方法去创建实现的,其底层的机制都是使用synchronized关键字对每个公有的方法进行同步,或者使用Object mutex对象锁机制使每次只能有一个线程访问容器。 同步类容器都是线程安全的,并非绝对,在某些复合操作场...原创 2019-06-19 09:24:04 · 147 阅读 · 0 评论 -
001并发类容器概念
JDK5.0以后提供了多种并发类容器来替代同步类容器,从而改善性能;同步类容器的状态都是串行化的,如有大量请求访问应用服务,如果使用同步类容器或者是synchronized、或者是Object锁的方式,同一时间只有一个请求会被放行执行具体的业务代码,执行后会释放锁,剩余的大量请求会出现锁竞争,谁获得就执行后续的业务处理,“锁竞争”会严重影响应用程序效率和致使CPU使用率过高。Concurr...原创 2019-06-19 10:28:55 · 114 阅读 · 0 评论 -
003并发容器类-并发Queue接口
JDK提供两套并发队列实现,一个是ConcurrentLinkedQueue为代表的高性能队列,另一个是以BlockingQueue接口为代表的阻塞队列,他们都继承自Queue接口;ConcurrentLinkedQueue(线程安全的无界无阻塞队列):是一个适合高并发场景下的队列,通过无锁的方式,实现了高并发状态下的高性能,通常ConcurrentLinkedQueue性能好于Block...原创 2019-06-19 12:32:27 · 111 阅读 · 0 评论 -
004阻塞Queue模拟
模拟要点:1.什么事阻塞队列?如何进行模拟一个阻塞队列?2.拥有固定长度承载元素的容器。3.计数统计容器的容量大小。4.当队列里面没有元素的时候执行线程要等待。5.单队列元素已满的时候执行线程也需要等待。//模拟阻塞Queue(队列)public class MyQueue { //1,定义队列的承载容器 private final LinkedList&...原创 2019-06-19 13:01:40 · 121 阅读 · 0 评论 -
005并发容器类-BlockingQueue接口
ConcurrentLinkedQueue(无界队列)://1.高性能的无阻塞无界队列ConcurrentLinkedQueue //无界队列不用定义长度 ConcurrentLinkedQueue<String> clq = new ConcurrentLinkedQueue(); //添加元素有两种方法offer...原创 2019-06-19 14:30:39 · 107 阅读 · 0 评论 -
006并发容器类-PriorityBlockingQueue
PriorityBlockingQueue基于优先级的阻塞队列优先级的判断通过构造函数传入的Compator对象来决定,也就是说传入队列的对象必须实现Comparable接口,实现的目的在于做一个大小的比较,在出队列的时候有一个先后的顺序,所有它并不遵循先进先出原则,按照自己定义(算法)的顺序,在实现PriorityBlockingQueue时,内部控制线程同步的锁采用的是公平锁,他也是一个无...原创 2019-06-19 14:41:18 · 122 阅读 · 0 评论 -
007并发容器类-DelayQueue
DelayQueue(无界队列):带有延迟时间的Queue其中的元素只有当其指定的延迟时间到了,才能够从队列中获取到该元素。DelayQueue中的元素必须实现Delayed接口,DelayQueue是一个没有大小限制的队列,应用场景很多,比如对缓存超时的数据进行移除、 任务超时处理、空闲连接的关闭等等。/** 网民类作为DelayQueue的元素,必须实现Delayed接口*/...原创 2019-06-19 14:48:20 · 99 阅读 · 0 评论