欢迎您的访问
专注架构,Java,数据结构算法,Python技术分享

Java并发 第2页

Java并发二十五:J.U.C之阻塞队列-ArrayBlockingQueue

站长阅读(504)赞(1)

ArrayBlockingQueue,一个由数组实现的有界阻塞队列。该队列采用FIFO的原则对元素进行排序添加的。 ArrayBlockingQueue为有界且固定,其大小在构造时由构造函数来决定,确认之后就不能再改变了。ArrayBloc...

Java并发二十四:J.U.C之Copy-On-Write容器

站长阅读(485)赞(1)

集合在我们开发中是使用得非常多的,包括在并发环境,我们知道Map接口在高并发时可以使用ConcurrentHashMap,但是List、Set貌似没有相应的ConcurrentList、ConcurrentSet,那么怎么解决List、Se...

Java并发二十三:J.U.C之Java并发容器-ConcurrentSkipListMap

站长阅读(508)赞(1)

到目前为止,我们在Java世界里看到了两种实现key-value的数据结构:Hash、TreeMap,这两种数据结构各自都有着优缺点。 Hash表:插入、查找最快,为O(1);如使用链表实现则可实现无锁;数据有序化需要显式的排序操作。 红黑...

Java并发二十二:J.U.C之Java并发容器-ConcurrentLinkedQueue

站长阅读(535)赞(2)

要实现一个线程安全的队列有两种方式:阻塞和非阻塞。阻塞队列无非就是锁的应用,而非阻塞则是CAS算法的应用。下面我们就开始一个非阻塞算法的研究:CoucurrentLinkedQueue。 ConcurrentLinkedQueue是一个基于...

Java并发二十一:J.U.C之深入分析CAS

站长阅读(530)赞(1)

CAS,Compare And Swap,即比较并交换。Doug lea大神在同步组件中大量使用CAS技术鬼斧神工地实现了Java多线程的并发操作。整个AQS同步组件、Atomic原子类操作等等都是以CAS实现的,甚至ConcurrentH...

Java并发二十:J.U.C之Java并发容器-ConcurrentHashMap

站长阅读(480)赞(1)

此篇博客所有源码均来自JDK 1.8 HashMap是我们用得非常频繁的一个集合,但是由于它是非线程安全的,在多线程环境下,put操作是有可能产生死循环的,导致CPU利用率接近100%。为了解决该问题,提供了Hashtable和Collec...

Java并发十九:J.U.C之并发工具类-Exchanger

站长阅读(557)赞(2)

此篇博客所有源码均来自JDK 1.8 前面三篇博客分别介绍了CyclicBarrier、CountDownLatch、Semaphore,现在介绍并发工具类中的最后一个Exchange。Exchange是最简单的也是最复杂的,简单在于API...

Java并发十八:J.U.C之并发工具类-Semaphore

站长阅读(558)赞(1)

此篇博客所有源码均来自JDK 1.8 信号量Semaphore是一个控制访问多个共享资源的计数器,和CountDownLatch一样,其本质上是一个“共享锁”。 Semaphore,在API是这么介绍的: 一个计数信号量。从概念上讲,信号量...

Java并发十七:J.U.C之并发工具类-CountDownLatch

站长阅读(454)赞(2)

此篇博客所有源码均来自JDK 1.8 在上篇博客中介绍了Java四大并发工具一直的CyclicBarrier,今天要介绍的CountDownLatch与CyclicBarrier有点儿相似。 CyclicBarrier所描述的是“允许一组线...