E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
J.U.C
[Java源码][并发
J.U.C
]---阻塞队列ArrayBlockingQueue
前言ArrayBlockingQueue是一个用数组实现的有界阻塞队列.此队列按照先进先出(FIFO)的原则对元素进行排序.本文源码:本文源码下载例子先通过一个简单的小例子看看其使用.有三个生产者和两个消费者.生产者负责生产数据,消费者负责消费数据.packagecom.arrayblockingqueue;publicclassTest01{staticArrayBlockingQueueabq
nicktming
·
2020-04-05 10:02
J.U.C
之Atomic:数组类型的原子类
数组类型的原子类类名说明AtomicIntegerArray原子更新整型数组里的元素。AtomicLongArray原子更新长整型数组里的元素。AtomicReferenceArray原子更新引用类型数组的元素。AtomicBooleanArray原子更新布尔类型数组的元素。AtomicIntegerArrayAtomicIntegerArray主要时用来封装对数组中某个元素操作。原理解析Atom
贪睡的企鹅
·
2020-04-04 08:31
Java多线程(十):
J.U.C
之并发容器ConcurrentHashMap
HashMap是我们用得非常频繁的一个集合,但是由于它是非线程安全的,在多线程环境下,put操作是有可能产生死循环的,导致CPU利用率接近100%。为了解决该问题,提供了Hashtable和Collections.synchronizedMap(hashMap)两种解决方案,但是这两种方案都是对读写加锁,独占式,一个线程在读时其他线程必须等待,吞吐量较低,性能较为低下。故而DougLea大神给我们
晓寒风骤
·
2020-04-01 16:32
并发
线程安全之 ReentrantLock 完全解析
关键字外(关于synchronized关键字的实现原理,请看之前写的线程安全之synchronized关键字),Java5之后还提供了API可以实现同样的功能,java.util.concurrent(简称
J.U.C
JohnnyShieh
·
2020-04-01 06:24
【Java并发编程】—–“
J.U.C
”:LinkedBlockingQueue
前言在前面的文章ArrayBlockingQueue源码分析中,已经对JDK中的BlockingQueue中的做了一个回顾,同时对ArrayBlockingQueue中的核心方法作了说明,而LinkedBlockingQueue作为JDK中BlockingQueue家族系列中一员,由于其作为固定大小线程池(Executors.newFixedThreadPool())底层所使用的阻塞队列,分析它的
Peter潘的博客
·
2020-03-30 16:49
J.U.C
:LinkedBlockingQueue
前面的文章ArrayBlockingQueue源码分析中,已经对JDK中的BlockingQueue中的做了一个回顾,同时对ArrayBlockingQueue中的核心方法作了说明,而LinkedBlockingQueue作为JDK中BlockingQueue家族系列中一员,由于其作为固定大小线程池(Executors.newFixedThreadPool())底层所使用的阻塞队列,分析它的目的主
景行lau
·
2020-03-30 13:15
J.U.C
同步框架
原文点击这里摘要J2SE1.5java.util.concurrent包中大部分的同步工具(locks,barriers等等)都是基于AbstractQueuedSynchronizer类(下面简称AQS)构建的。这个类提供了用来管理"同步器(Synchronizer)"状态,阻塞和唤醒线程以及管理同步队列的通用机制。本文介绍了该类的一些基本设计思路、实现、用法以及一些性能方面的考量。1.简介J2
IQException
·
2020-03-28 22:26
【死磕Java并发】-----
J.U.C
之并发工具类:Exchanger
此篇博客所有源码均来自JDK1.8前面三篇博客分别介绍了CyclicBarrier、CountDownLatch、Semaphore,现在介绍并发工具类中的最后一个Exchange。Exchange是最简单的也是最复杂的,简单在于API非常简单,就一个构造方法和两个exchange()方法,最复杂在于它的实现是最复杂的(反正我是看晕了的)。在API是这么介绍的:可以在对中对元素进行配对和交换的线程
chenssy
·
2020-03-28 19:53
【Java并发编程】—–“
J.U.C
”:Executor体系结构
前言在以前使用线程池的时候,都是简单的调用API。对于线程池体系结构原理都没有深究,直到最近在看看Netty的线程池源码时发现其都是在JDK线程池的基础上做了进一步封装,因此个人觉得应该好好深入学习一下JDK本身的线程池,一来可以看看DougLea大神的设计,二来对于后续深入分析Netty的线程模型也有比较大的帮助。本文所包含的内容主要由以上两方面(如有分析不对,请拍砖):使用线程池的理由JDK线
Peter潘的博客
·
2020-03-28 05:25
【死磕Java并发】-----
J.U.C
之阻塞队列:LinkedTransferQueue
原文出处http://cmsblogs.com/『chenssy』前面提到的各种BlockingQueue对读或者写都是锁上整个队列,在并发量大的时候,各种锁是比较耗资源和耗时间的,而前面的SynchronousQueue虽然不会锁住整个队列,但它是一个没有容量的“队列”,那么有没有这样一种队列,它即可以像其他的BlockingQueue一样有容量又可以像SynchronousQueue一样不会锁
chenssy
·
2020-03-26 16:58
J.U.C
源码阅读之AQS
锁的框架图概念理解1.AQS--指AbstractQueuedSynchronizer类。AQS是java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现。AQS是独占锁(例如,ReentrantLock)和共享锁(例如,Semaphore)的公共父类。继承AbstractOwnableSynchronizer类2.AQS锁的类别--分为“独占锁”和“共享锁”两种。(01)独占锁--锁在一
Stone_soul
·
2020-03-26 14:09
Java并发之AQS源码分析(一)
它能够成为实现大部分同步需求的基础,也是
J.U.C
并发包同步的核心基础组件。AQ
编程小世界
·
2020-03-25 00:16
【死磕Java并发】-----
J.U.C
之AQS:AQS简介
Java的内置锁一直都是备受争议的,在JDK1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略(【死磕Java并发】-----深入分析synchronized的实现原理),但是与Lock相比synchronized还是存在一些缺陷的:虽然synchronized提供了便捷性的隐式获取锁释放锁机制(基于JVM机制),但是它却缺少了获取锁与释放
chenssy
·
2020-03-21 20:22
Java多线程并发编程中并发容器第二篇之List的并发类讲解
list对应的并发容器以及用代码来测试ArrayList、vector以及CopyOnWriteArrayList在100个线程向list中添加1000个数据后的比较本文是《凯哥分享Java并发编程之
J.U.C
凯哥Java
·
2020-03-17 10:18
凯哥Java
凯哥学并发
Java多线程并发编程中并发容器第二篇之List的并发类讲解
list对应的并发容器以及用代码来测试ArrayList、vector以及CopyOnWriteArrayList在100个线程向list中添加1000个数据后的比较本文是《凯哥分享Java并发编程之
J.U.C
kaizi1992
·
2020-03-17 10:00
Java多线程并发之同步容器和并发容器-第一篇
本文是《凯哥分享Java并发编程之
J.U.C
包讲解》系列教程中的第五篇。如果想系统学习,凯哥(kaigejava)建议从第一篇开始看。从本篇开始,我们就来讲解讲解Java的并发容器。大致思路:先介
kaizi1992
·
2020-03-16 10:00
Java多线程并发之同步容器和并发容器-第一篇
本文是《凯哥分享Java并发编程之
J.U.C
包讲解》系列教程中的第五篇。如果想系统学习,凯哥(kaigejava)建议从第一篇开始看。从本篇开始,我们就来讲解讲解Java的并发容器。大致思路:先介
凯哥Java
·
2020-03-16 10:25
Java并发容器
凯哥学并发
J.U.C
之AQS:大话AQS详解和使用
J.U.C
之AQS:AQS详解和使用1AQS是什么AQS是AbstractQueuedSynchronizer的缩写,翻译过来就是"同步器",AbstractQueuedSynchronizer是一个抽象类
贪睡的企鹅
·
2020-03-14 05:54
【死磕Java并发】-----
J.U.C
之Condition
此篇博客所有源码均来自JDK1.8在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在JavaSE5后,Java提供了Lock接口,相对于Synchronized而言,Lock提供了条件Condition,对线程的等待、唤醒操作更加详细和灵活。下图是Condition与Object的监视器方法的对比(摘自
chenssy
·
2020-03-06 19:09
【Java并发编程】—–“
J.U.C
”:SynchronousQueue
前言SynchronousQueue作为BlockingQueue体系中的一员,它与我们平常使用较多的ArrayBlockingQueue、LinkedBlockingQueue有着较大的差异,与此同时,它在实现的细节上也比前面的两个队列要复杂的多。在分析的过程中,如果有大神发现有不对之处,还望及时指正!SynchrnousQueue基本介绍SynchronousQueue主要有如下的特点:Syn
Peter潘的博客
·
2020-03-06 12:26
【转载】线程池-2
这次就实现这三个特性来看看
j.u.c
中的线程池是如何实现这些需求的。
ongahong
·
2020-03-05 21:14
J.U.C
|condition分析
一、写在前面在前几篇我们聊了AQS、CLH、ReentrantLock、ReentrantReadWriteLock等的原理以及其源码解读,具体参见专栏《非学无以广才》这章我们一起聊聊显示的Condition对象。二、简介在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、wait(longtimeout)、notify()、以及notifyAll等方法
阅历笔记
·
2020-02-29 08:46
sun.misc.Unsafe中一些常用方法记录
Sun之所以提供这个类,因为有些功能现有的JavaAPI满足不了,如果没有这个类,可能就没有现在原子类,
J.U.C
包了,也许也没了各种Concurrent
早知今日
·
2020-02-23 19:00
3.ReentrantLock源码解析
LockLock在
J.U.C
中是最核心的组件,
J.U.C
包中的所有组件绝大部分的组件都有用到了Lock。在Lock接口出现之前,Java中的应用程序对于多线程的并发安全处理只能基于syn
威少JAVA
·
2020-02-23 15:31
慕课网高并发实战(七)-
J.U.C
之AQS
7.1AbstractQueuedSynchronizer-AQS底层实现了双向链表,是队列的一种实现方式对象创建以后其状态就不能修改底层是双向链表,队列的一种实现syncqueue:同步队列,head节点主要负责后面的调度Conditionqueue:单向链表,不是必须的的,也可以有多个设计原理使用Node实现FIFO队列,可以用于构建锁或者其他同步装置的基础框架利用了一个int类型标示状态,有
景行lau
·
2020-02-22 08:00
你的 JVM 还好吗?GC 初步诊断
我们平常接触的spring,dubbo,java集合&
J.U.C
,网上都有无数优秀的文章对其深入的分析
Java黎先生
·
2020-02-21 20:57
(七)Java并发学习笔记--并发容器(
J.U.C
)
并发容器之CopyOnWriteArrayListCopy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArray
一行代码一首诗
·
2020-02-15 02:51
【死磕Java并发】-----
J.U.C
之深入分析CAS
CAS,CompareAndSwap,即比较并交换。Douglea大神在同步组件中大量使用使用CAS技术鬼斧神工地实现了Java多线程的并发操作。整个AQS同步组件、Atomic原子类操作等等都是以CAS实现的,甚至ConcurrentHashMap在1.8的版本中也调整为了CAS+Synchronized。可以说CAS是整个JUC的基石。CASCAS分析在CAS中有三个参数:内存值V、旧的预期值
chenssy
·
2020-02-14 03:56
【死磕Java并发】-----
J.U.C
之阻塞队列:SynchronousQueue
原文出处http://cmsblogs.com/『chenssy』【注】:SynchronousQueue实现算法看的晕乎乎的,写了好久才写完,如果当中有什么错误之处,忘各位指正作为BlockingQueue中的一员,SynchronousQueue与其他BlockingQueue有着不同特性:SynchronousQueue没有容量。与其他BlockingQueue不同,SynchronousQ
chenssy
·
2020-02-10 02:32
J.U.C
学习总结
[toc]java内存模型JavamemorymodeljMMimage.pngimage.pngjava内存八种操作image.pnglock>read>load>use>assing>store>write>unlock线程安全定义当多个线程访问某一个类时,不管运行时环境何种调度方式或者这些进程如何交替执行,并且在主调用代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么这个就程
王小杰at2019
·
2020-02-08 21:18
【Java并发编程】—–“
J.U.C
”:ConcurrentLinkedQueue
前言在之前的文章中,已经对ArrayBlockingQueue、LinkedBlockingQueue这两个比较常用的阻塞队列做了源码分析,我们知道其内部都是通过ReentrantLock来保证数据读写的线程安全,通过Condition来完成线程等待和唤醒,只不过ArrayBlockingQueue在读写时使用了一把锁所完成,而LinkedBlockingQueue对于读和写分别使用了两把锁来进行
Peter潘的博客
·
2020-02-06 11:47
09-ConcurrentHashMap源码分析
ConcurrentHashMap源码分析ConcurrentHashMap的初步使用及场景ConcurrentHashMap的使用ConcurrentHashMap是
J.U.C
包里面提供的一个线程安全并且高效的
VwenbinV
·
2020-01-15 14:35
并发
链表
分布式
python
数据结构
java
Java并发(四)AQS
1.AQS产生的背景通过JCP的JSR166规范,Jdk1.5开始引入了
j.u.c
包,这个包提供了一系列支持并发的组件。
fedorafrog
·
2020-01-07 17:44
#
Java并发
并发十七:Future详解
FutureFuture是
J.U.C
中的一个接口,它代表着一个异步执行结果。
wangjie2016
·
2020-01-07 02:37
并发十一:条件队列Condition实现分析
ConditionCondition是
J.U.C
包中的一个接口,提供了三个主要方法await、signal和signalAll。
wangjie2016
·
2020-01-05 12:53
J.U.C
- 队列同步器 AQS - 并发包核心组件
这里粘出的源码基于JDK1.8部分方法的源码不是全部源码,删除掉了部分注释以及对主要逻辑没有影响的内容。贴出源码目的主要是为了根据源码讲清逻辑。主要内容包括:AQS简介CLH同步队列同步状态的获取与释放AQS简介Java的内置锁(synchronized关键字)一直都是备受争议的,在1.6之前这个重量级锁性能较为低下,虽然在1.6之后在基础层面进行了大量优化,但与Lock相比还是存在一些缺陷:sy
_Zy
·
2020-01-03 23:11
CAS都不了解,你还怎么看
J.U.C
前言说到CAS(CompareAndSwap),不得不先说一说悲观锁和乐观锁,因为CAS是乐观锁思想的一种实现。悲观锁:总是很悲观的认为,每次拿数据都会有其他线程并发执行,所以每次都会进行加锁,用完之后释放锁,其他的线程才能拿到锁,进而拿到资源进行操作。java中的synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。乐观锁:总是很乐观认为,自己拿到数据操作的时候,没有
Java_老男孩
·
2020-01-03 22:44
Java
程序员
CAS
【死磕Java并发】-----
J.U.C
之读写锁:ReentrantReadWriteLock
此篇博客所有源码均来自JDK1.8重入锁ReentrantLock是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少。然而读服务不存在数据竞争问题,如果一个线程在读时禁止其他线程读势必会导致性能降低。所以就提供了读写锁。读写锁维护着一对锁,一个读锁和一个写锁。通过分离读锁和写锁,使得并发性比一般的排他锁有了较大的提升:在同一时间
chenssy
·
2020-01-03 00:15
JAVA并发编程与高并发解决方案 - 并发编程 三 之 线程安全策略
2018.5.17chuIllusions线程安全策略相关文章JAVA并发编程与高并发解决方案-并发编程一之并发相关知识JAVA并发编程与高并发解决方案-并发编程二之线程安全性、安全发布对象JAVA并发编程与高并发解决方案-并发编程四之
J.U.C
chuIllusions丶
·
2020-01-01 02:46
【死磕Java并发】-----
J.U.C
之ConcurrentHashMap红黑树转换分析
原文出处http://cmsblogs.com/『chenssy』在【死磕Java并发】-----
J.U.C
之Java并发容器:ConcurrentHashMap一文中详细阐述了ConcurrentHashMap
chenssy
·
2019-12-31 21:32
ReentrantLock浅析
最近学习一些关于
J.U.C
的Lock锁的知识,记录一下以免忘记
J.U.C
简介Java.util.concurrent是并发编程中常用的工具类。包含了线程池,阻塞队列,计时器,同步器,并发集合等等。
醉梦了红尘
·
2019-12-31 18:17
#随笔
java
【细谈Java并发】谈谈CountDownLatch
1、简介CountDownLatch也叫闭锁,它是
J.U.C
包中基于AQS实现的一个很简单的类,它允许一个或多个线程等待其他线程完成操作后再执行。
蹲厕所的熊
·
2019-12-31 10:28
Java并发编程:11-并发级别和无锁类
前言:前面的几篇内容都是关于
J.U.C
的同步工具类,包括使用时需要注意的地方,以及它们是如何通过AQS来实现的,在解读源码的时候,发现经常出现CAS操作,下面我们来了解一下CAS。
Networkcavalry
·
2019-12-31 04:02
java
并发编程
J.U.C
原子类系列之AtmoicIntegerArray
简介原子化数组包括:AtomicIntegerArray、AtomicLongArray和AtomicReferenceArray。在并发环境下,数组的操作都是原子化。有趣的是,AtomicIntegerArray、AtomicLongArray和AtomicReferenceArray这三个原子类的实现基本一样,许多方法也和基本数据类型的原子类相似,因此也不作过多的解释。如果对基本数据类型的原子
MuggleLee
·
2019-12-28 12:56
j.u.c
同步工具
同步工具:java.util.concurrent.CountDownLatchCountDownLatch,当count减为0,唤醒锁同步队列中的线程。借助共享锁实现,//count就是AQS中status的值,共享锁状态publicCountDownLatch(intcount){if(count<0)thrownewIllegalArgumentException("count<0");th
BenjaminCool
·
2019-12-28 06:43
Java中CAS学习记录
在DougLea大神提供的
J.U.C
并发包中,可以说CAS是实现整个
J.U.C
包的基石。在CAS方法中,有三个操作数,当前的内存值V,
BrightLoong
·
2019-12-28 04:49
并发十六:并发容器ConcurrentHashMap实现分析
J.U.C
中实现Map接口的并容器有ConcurrentHashMap和ConcurrentSkipListMap。
wangjie2016
·
2019-12-28 01:14
Java 并发核心机制
本文以及示例源码已归档在javacore一、
J.U.C
简介Java的java.util.concurrent包(简称
J.U.C
)中提供了大量并发工具类,是Java并发能力的主要体现(注意,不是全部,有部分并发能力的支持在其他包中
静默虚空
·
2019-12-27 13:00
JAVA并发编程与高并发解决方案 - 并发编程 四 之
J.U.C
之AQS
-并发编程一之并发相关知识JAVA并发编程与高并发解决方案-并发编程二之线程安全性、安全发布对象JAVA并发编程与高并发解决方案-并发编程三之线程安全策略JAVA并发编程与高并发解决方案-并发编程五之
J.U.C
chuIllusions丶
·
2019-12-26 03:54
J.U.C
- 重入锁 ReenterantLock
这里粘出的源码基于JDK1.8部分方法的源码不是全部源码,删除掉了部分注释以及对主要逻辑没有影响的内容。贴出源码目的主要是为了根据源码讲清逻辑。主要内容包括:获取锁释放锁公平锁与非公平锁ReentrantLock与synchronized的区别参考资料ReentrantLock,JUC提供的可重入锁,是一种递归无阻塞的同步机制。它可以等同于synchronized的使用,但是提供了比synchro
_Zy
·
2019-12-26 02:41
上一页
5
6
7
8
9
10
11
12
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他