CountDownLatch ? Java 5.0 在 java.util.concurrent 包中提供了多种并发容器类来改进同步容器的性能。 ? CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作 之前,它允许一个或多个线程一直等待。 ? 闭锁可以延迟线程的进度直到 ...
分类:
其他好文 时间:
2019-04-30 01:29:12
阅读次数:
161
同步容器和并发容器 先解释一下概念,说下自己的理解: 同步和异步:同步就是串行,两个操作要串行先后一起完成后面的操作要等前面的完成并返回结果才能往下走,而异步则后面的操作可以不用等前面的操作是否完成就能执行自己的操作 阻塞和非阻塞:阻塞就是加锁,某一线程拿到锁之后其他线程就只能等待,非阻塞就是不加锁 ...
分类:
编程语言 时间:
2019-04-08 13:45:46
阅读次数:
184
1.ConcurrentHashmap简介 在使用HashMap时在多线程情况下扩容会出现CPU接近100%的情况,因为hashmap并不是线程安全的,通常我们可以使用在java体系中古老的hashtable类,该类基本上所有的方法都采用synchronized进行线程安全的控制,可想而知,在高并发 ...
分类:
其他好文 时间:
2019-02-08 20:15:40
阅读次数:
152
1. ThreadLocal的简介 在多线程编程中通常解决线程安全的问题我们会利用synchronzed或者lock控制线程对临界区资源的同步顺序从而解决线程安全的问题,但是这种加锁的方式会让未获取到锁的线程进行阻塞等待,很显然这种方式的时间效率并不是很好。线程安全问题的核心在于多个线程会对同一个临 ...
分类:
其他好文 时间:
2019-02-08 20:10:36
阅读次数:
181
1.ConcurrentLinkedQueue简介 在单线程编程中我们会经常用到一些集合类,比如ArrayList,HashMap等,但是这些类都不是线程安全的类。在面试中也经常会有一些考点,比如ArrayList不是线程安全的,Vector是线程安全。而保障Vector线程安全的方式,是非常粗暴的 ...
分类:
其他好文 时间:
2019-02-08 20:02:34
阅读次数:
141
1. CopyOnWriteArrayList的简介 java学习者都清楚ArrayList并不是线程安全的,在读线程在读取ArrayList的时候如果有写线程在写数据的时候,基于fast-fail机制,会抛出ConcurrentModificationException异常,也就是说ArrayLi ...
分类:
其他好文 时间:
2019-02-08 20:02:01
阅读次数:
152
1. ArrayBlockingQueue简介 在多线程编程过程中,为了业务解耦和架构设计,经常会使用并发容器用于存储多线程间的共享数据,这样不仅可以保证线程安全,还可以简化各个线程操作。例如在“生产者-消费者”问题中,会使用阻塞队列(BlockingQueue)作为数据容器,关于BlockingQ ...
分类:
数据库 时间:
2019-02-08 20:00:17
阅读次数:
236
1. BlockingQueue简介 在实际编程中,会经常使用到JDK中Collection集合框架中的各种容器类如实现List,Map,Queue接口的容器类,但是这些容器类基本上不是线程安全的,除了使用Collections可以将其转换为线程安全的容器,Doug Lea大师为我们都准备了对应的线 ...
分类:
其他好文 时间:
2019-02-08 19:51:54
阅读次数:
158
容器类中提供的ArrayList、HashMap、HashSet不是线程安全的,并发包下提供了类似功能的线程安全的集合。 队列是一种数据结构,它以一种先进先出的方式管理数据。如果你试图向一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞。 队列操作: 数组实 ...
分类:
其他好文 时间:
2018-12-24 20:55:15
阅读次数:
157
目录 非阻塞队列 阻塞队列 双端队列 非阻塞队列(AbstractQueue) 队列介绍 1 ConcurrentLinkedQueue 先进先出队列 2 PriorityQueue 非并发的优先队列 非阻塞队列方法 1 add(E e) 将元素e插入队列末尾,如果插入成功,返回true;如果插入失 ...
分类:
其他好文 时间:
2018-12-24 00:01:20
阅读次数:
129