多线程
xiaoniuxqq
这个作者很懒,什么都没留下…
展开
-
高并发碰到的类和方法
CopyOnWriteArrayList Collections.unmodifiableMap() Collections.synchronizedCollection()加锁对象是谁 ConcurrentLinkedQueue ConcurrentHashMap ConcurrentSkipListMap ConcurrentSkipListSet并发容器替代SortedSet原创 2018-01-21 14:00:51 · 314 阅读 · 0 评论 -
volatile的用法
1、volatile用于保证多线程并发可见性,其原理在于阻止jvm对volatile语句进行重排序,另外会提供内存屏障(memory barrier)简单的说,就是当你写一个 volatile 变量之前,Java 内存模型会插入一个写屏障(write barrier),读一个 volatile 变量之前,会插入一个读屏障(read barrier)。2、在32位的jvm中,double 和 l原创 2018-01-23 12:41:42 · 350 阅读 · 0 评论 -
什么时候使用CountDownLatch
正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编 程中跟CountDownLatch相关的以下几点:目录CountDownLatch是什么?C转载 2018-01-10 22:03:41 · 128 阅读 · 0 评论 -
Semaphore许可访问类
一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。拿到信号量的线程可以进入代码,否则就等待。通过acquire()和release()获取和释放访问许可转载 2018-01-10 22:12:32 · 144 阅读 · 0 评论 -
ConcurrentHashMap总结
并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点好像CAP理论啊 O(∩_∩)O)。ConcurrentHashMap的设计与实现非常精巧,大量的利用了volatile,f转载 2018-01-10 22:20:51 · 125 阅读 · 0 评论 -
BlockingQueue
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而转载 2018-01-10 22:25:45 · 108 阅读 · 0 评论