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
高性能编程
(1)ThreadLocal变量(2)不可变对象有String,CopyOnWrite集合类(3)互斥锁包括JDK5之前的内置锁synchronized和JDK5之后的Lock接口(4)
J.U.C
里面Atom
dubingxin
·
2019-12-24 10:06
J.U.C
源码阅读系列-TheadPoolExecutor
ThreadPoolExecutor类继承体系:ThreadPoolExecutor->AbstractExecutorService->ExecutorService->ExecutorExecutors提供工厂方法,用于创建不同类型的线程池newFixedThreadPool()newSingleThreadExecutor()newCachedThreadPool()newScheduled
网虫子
·
2019-12-21 16:29
Java并发编程:6-Lock & Condition
前言:在正式开始之前学习
J.U.C
之前,我们先来了解一下Java中的管程模型,尤其是对管程示意图的掌握,会极大的帮助我们理解并发包中的方法逻辑,之后会对Lock和Condition进行简单的介绍。
Networkcavalry
·
2019-12-21 01:46
java
并发编程
lock
condition
Java并发编程:7-ReadWriteLock
本篇来看看
J.U.C
中的ReadWriteLock,再次膜拜一下DougLea大神的杰作。面试问题Q:谈谈ReadWriteLock的好处?
Networkcavalry
·
2019-12-21 01:13
并发编程
aqs
java
阿里P7架构师带你深入分析AQS实现原理
阿里P7架构师带你深入分析AQS实现原理内容导航ReentrantLock重入锁的使用引入AQS什么是AQSAQS的源码分析简单解释一下
J.U.C
,是JDK中提供的并发工具包,java.util.concurrent
勤奋的码农
·
2019-12-19 15:13
源码分析之ConcurrentHashMap
DougLea大神在
j.u.c
包下给我们提供了一个适用于多线程并发环境使用的集合类ConcurrentHashMap。
特立独行的猪手
·
2019-12-18 22:36
Java并发
J.U.C
学习总结
转载自http://www.cnblogs.com/chenpi/结合自己理解稍有添加自己的理解阅读目录JSR166及J.U.CExecutor框架(线程池、Callable、Future)AbstractQueuedSynchronizer(AQS框架)Locks&Condition(锁和条件变量)Synchronizers(同步器)AtomicVariables(原子变量)BlockingQu
Autism_Dong
·
2019-12-18 11:00
j.u.c
ConcurrentLinkedQueue
ConcurrentLinkedQueue无界队列FIFO此类不允许使用空元素。迭代器是弱一致的,返回的元素反映了在迭代器创建时或之后某个点上队列的状态.基于链接节点的无限线程安全队列。此队列对元素FIFO(先进先出)进行排序。队列的头是队列中出现时间最长的元素。队列的尾部是在队列中出现的时间最短的元素。在队列的尾部插入新元素,队列检索操作在队列的头部获取元素。当许多线程共享对公共集合的访问时,C
BenjaminCool
·
2019-12-16 01:22
【死磕Java并发】-----
J.U.C
之Java并发容器:ConcurrentSkipListMap
原文出处http://cmsblogs.com/『chenssy』到目前为止,我们在Java世界里看到了两种实现key-value的数据结构:Hash、TreeMap,这两种数据结构各自都有着优缺点。Hash表:插入、查找最快,为O(1);如使用链表实现则可实现无锁;数据有序化需要显式的排序操作。红黑树:插入、查找为O(logn),但常数项较小;无锁实现的复杂性很高,一般需要加锁;数据天然有序。然
chenssy
·
2019-12-14 21:02
j.u.c
ReentrantReadWriteLock
java.util.concurrent.locks.ReentrantReadWriteLockstate高16位表示共享锁;state低16位表示独占锁。共享锁和独占锁共用一个AQS对象,共用同一个锁同步队列共享锁加锁当前只有共享锁线程A第一次获取锁state00000000000000010000000000000000相当于0001(1)线程A第二次获取锁state000000000000
BenjaminCool
·
2019-12-14 18:32
j.u.c
队列
blockingQueue只能检索并删除此队列的头只能在队列尾插入遵循FIFOpublicinterfaceBlockingQueueextendsQueue{//如果可以在不违反容量限制的情况下立即将指定元素插入此队列,则成功时返回true,如果当前没有可用空间,则抛出IllegalStateException。当使用容量受限队列时,通常最好使用offer。booleanadd(Ee);//如果
BenjaminCool
·
2019-12-14 15:05
j.u.c
线程、线程池
工作线程核心工作代码finalvoidrunWorker(Workerw){Threadwt=Thread.currentThread();Runnabletask=w.firstTask;w.firstTask=null;w.unlock();//allowinterruptsbooleancompletedAbruptly=true;try{//firstTask不为空,则执行firstTas
BenjaminCool
·
2019-12-12 12:44
J.U.C
- 线程池 ThreadPoolExecutor
这里粘出的源码基于JDK1.8ThreadPoolExecutor线程池类。是Executor框架中最核心的类。主要包括:线程池状态介绍以及状态流转线程池的创建线程池构造器的相关参数以及作用Exectors提供的线程池介绍以及存在的缺陷线程池的任务提交流程以及源码分析线程池的关闭线程池状态privatefinalAtomicIntegerctl=newAtomicInteger(ctlOf(RUN
_Zy
·
2019-12-12 12:13
J.U.C
剖析与解读2(AQS的由来)
J.U.C
剖析与解读2(AQS的由来)前言前面已经通过实现自定义ReentrantLock与自定义ReentrantReadWriteLock,展示了JDK是如何实现独占锁与共享锁的。
血夜之末
·
2019-12-12 09:00
CAS都不了解,你还怎么看
J.U.C
前言说到CAS(CompareAndSwap),不得不先说一说悲观锁和乐观锁,因为CAS是乐观锁思想的一种实现。悲观锁:总是很悲观的认为,每次拿数据都会有其他线程并发执行,所以每次都会进行加锁,用完之后释放锁,其他的线程才能拿到锁,进而拿到资源进行操作。java中的synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。乐观锁:总是很乐观认为,自己拿到数据操作的时候,没有
9龙
·
2019-12-11 17:00
CAS都不了解,你还怎么看
J.U.C
前言说到CAS(CompareAndSwap),不得不先说一说悲观锁和乐观锁,因为CAS是乐观锁思想的一种实现。悲观锁:总是很悲观的认为,每次拿数据都会有其他线程并发执行,所以每次都会进行加锁,用完之后释放锁,其他的线程才能拿到锁,进而拿到资源进行操作。java中的synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。乐观锁:总是很乐观认为,自己拿到数据操作的时候,没有
9龙
·
2019-12-11 17:00
j.u.c
ConcurrentLinkedDeque
无界双端队列FIFO/LIFO此类不允许使用空元素。迭代器是弱一致的,返回的元素反映了在迭代器创建时或之后某个点上队列的状态.基于链接节点的无边界并发deque。并发插入、删除和访问操作安全地跨多个线程执行。当许多线程共享对公共集合的访问时,concurrentlinkedque是一个适当的选择。与大多数其他并发集合实现一样,此类不允许使用空元素。迭代器是弱一致的,返回的元素反映了在迭代器创建时或
BenjaminCool
·
2019-12-07 03:46
并发七:AQS队列同步器实现分析
AQS队列同步器(AbstractQueuedSynchronizer)简称AQS,是
J.U.C
同步构件的基础,包括ReentrantLock、ReentrantReadWriteLock、CountDownLatch
wangjie2016
·
2019-12-01 19:04
【死磕Java并发】-----
J.U.C
之Java并发容器:ConcurrentHashMap
此篇博客所有源码均来自JDK1.8HashMap是我们用得非常频繁的一个集合,但是由于它是非线程安全的,在多线程环境下,put操作是有可能产生死循环的,导致CPU利用率接近100%。为了解决该问题,提供了Hashtable和Collections.synchronizedMap(hashMap)两种解决方案,但是这两种方案都是对读写加锁,独占式,一个线程在读时其他线程必须等待,吞吐量较低,性能较为
chenssy
·
2019-12-01 06:57
J.U.C
剖析与解读1(Lock的实现)
J.U.C
剖析与解读1(Lock的实现)前言为了节省各位的时间,我简单介绍一下这篇文章。这篇文章主要分为三块:Lock的实现,AQS的由来(通过演变的方式),JUC三大工具类的使用与原理剖析。
血夜之末
·
2019-11-26 09:00
用简易例子讲Java中的回调机制
为什么要写这篇文章,因为在看
J.U.C
包的FutureTask源码的时候,有一个done()方法,这是个抽象方法,用户实现它之后,FutureTask会在执行完后调用这个方法。
wx5d9ed7c8443c3
·
2019-11-21 21:13
程序员
后端
互联网
现代计算机模型-
J.U.C
并发系列(1)
系列介绍本系列主要重点介绍Java中的
J.U.C
并发编程,从原理,理论到实践的过程,带你一步步了解各种知识点,把所有技术点构成一个闭环,形成一个知识体系。希望在
J.U.C
系列对你有新的了解和认知。
william
·
2019-11-14 16:26
java
什么是线程、并发-
J.U.C
并发系列(2)
回顾回顾上一篇的文章,我们主要介绍了现代计算机模型,CPU的缓存一致性协议,CPU和内存的工作原理,这些知识点都是为了更好的去学习我们的Java并发编程。介绍本文,我们来了解一个概念,什么是线程?Java中线程和计算机的线程有什么区别?什么是线程现代操作系统在运行一个程序时,会为其创建一个进程。例如,启动一个Java程序、网页、软件应用等,操作系统就会创建一个进程。现代操作系统调度CPU的最小单元
william
·
2019-11-14 16:25
java
【死磕Java并发】-----
J.U.C
之重入锁:ReentrantLock
此篇博客所有源码均来自JDK1.8ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于synchronized的使用,但是ReentrantLock提供了比synchronized更强大、灵活的锁机制,可以减少死锁发生的概率。API介绍如下:一个可重入的互斥锁定Lock,它具有与使用synchronized方法和语句所访问的隐式监视器锁定相同的一些基本行为和语义,但功能更
chenssy
·
2019-11-08 15:00
J.U.C
之AQS
基于jdk8越是核心的东西越是要反复看,本文篇幅较长,希望各位细细品读,来回多读几遍理解下。AQS简介 java的内置锁一直都是备受争议的,在JDK6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在JDK6后,进行大量的锁优化策略,但是与Lock相比synchronized还是存在一些缺陷的:虽然synchronized提供了便捷性的隐式获取锁释放锁机制(基于JVM机制)
剑书藏于西
·
2019-11-05 17:40
Java并发编程:用AQS写一把可重入锁
AQS简介AQS是
J.U.C
包下AbstractQueuedSynchronizer抽象的队列式的同步器的简称,这是一个抽象类,它定义了一套多线程访问共享资源的同步器框架,
J.U.C
包下的许多同步类实现都依赖于它
Java架构007
·
2019-11-02 21:47
【死磕Java并发】-----
J.U.C
之并发工具类:Semaphore
此篇博客所有源码均来自JDK1.8信号量Semaphore是一个控制访问多个共享资源的计数器,和CountDownLatch一样,其本质上是一个“共享锁”。Semaphore,在API是这么介绍的:一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个acquire(),然后再获取该许可。每个release()添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不
chenssy
·
2019-11-01 21:38
【死磕Java并发】-----
J.U.C
之并发工具类:CyclicBarrier
此篇博客所有源码均来自JDK1.8CyclicBarrier,一个同步辅助类,在API中是这么介绍的:它允许一组线程互相等待,直到到达某个公共屏障点(commonbarrierpoint)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时CyclicBarrier很有用。因为该barrier在释放等待线程后可以重用,所以称它为循环的barrier。通俗点讲就是:让一组线程到达一个
chenssy
·
2019-10-31 07:22
【死磕Java并发】-----
J.U.C
之阻塞队列:ArrayBlockingQueue
原文出处http://cmsblogs.com/『chenssy』ArrayBlockingQueue,一个由数组实现的有界阻塞队列。该队列采用FIFO的原则对元素进行排序添加的。ArrayBlockingQueue为有界且固定,其大小在构造时由构造函数来决定,确认之后就不能再改变了。ArrayBlockingQueue支持对等待的生产者线程和使用者线程进行排序的可选公平策略,但是在默认情况下不保
chenssy
·
2019-10-31 02:58
Java并发编程——
J.U.C
组件FutureTask、ForkJoin、BlockingQueue
目录一、`Runnable`与`Callable`1.`Runnable`与`Callable`对比源码区别:相同点不同点:注:`Callalbe`接口支持返回执行结果,需要调用`FutureTask.get()`得到,此方法会阻塞主进程的继续往下执行,如果不调用不会阻塞;二、`Future`接口1.`Future`接口`Future`介绍:Future接口是Java线程Future模式的实现,可
zjtMeng
·
2019-10-30 15:40
Java并发编程
Java并发编程
Callable接口
Runnable接口
Future接口
FutureTask接口
J.U.C
并发包梳理与补充
collectionsCopyOnWriteBlockingQueue并发工具类tools线程执行器Executor锁locks在不同的地方学习了许多和并发相关的工具或者类并总结在了不同的博文中,这里做一个总的关系梳理并进行相关的补充,首先来看下
J.U.C
MOKE_XR
·
2019-10-10 14:26
并发编程
Java多线程之原子操作类
实际上,在
J.U.C
下的Atomic包提供了一系列的操作简单,性能高效,并能保证线程安全的类去更新多种类型。
全菜工程师小辉
·
2019-09-18 12:00
Java多线程之原子操作类
实际上,在
J.U.C
下的Atomic包提供了一系列的操作简单,性能高效,并能保证线程安全的类去更新多种类型。
全菜工程师小辉
·
2019-09-18 12:00
Java多线程之原子操作类
实际上,在
J.U.C
下的Atomic包提供了一系列的操作简单,性能高效,并能保证线程安全的类去更新多种类型。
全菜工程师小辉
·
2019-09-18 12:00
java并发(七):同步容器和集合类并发容器(
J.U.C
)
1.Collections.synchronizedList利用同步容器Collections.synchronizedList来将一个线程不安全的类转化成为一个线程安全的集合。线程同步容器都是通过sychronized方式实现的。@Slf4j@ThreadSafepublicclassCollectionsExample1{//请求总数publicstaticintclientTotal=500
LUK流
·
2019-09-11 15:51
并发
淘宝架构师经典面试题集合:分布式+Redis+微服务+MySQL
(乐观锁&悲观锁、可重入锁&Synchronize等)比较重要的数据结构,如链表,队列,栈的基本理解及大致实现
J.U.C
下的常见类的使用。
kukelook
·
2019-09-10 20:13
Java
分布式
redis
淘宝架构师经典面试题集合:分布式+Redis+微服务+MySQL
(乐观锁&悲观锁、可重入锁&Synchronize等)比较重要的数据结构,如链表,队列,栈的基本理解及大致实现
J.U.C
下的常见类的使用。
bihui0660
·
2019-09-10 20:13
AtomicInteger源码分析
可以加Synchronized悲观锁解决,考虑到性能问题,JDK1.5后,
J.U.C
包提供Atomic包→对常用数据结构做原子操作。
JeremyJiaming
·
2019-09-02 15:00
JavaCore
J.U.C
锁之 ReentrantReadWriteLock
1简介重入锁ReentrantLock是一个排他锁,所谓排他锁即在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少。然而读服务不存在数据竞争问题,如果一个线程在读时禁止其他线程读势必会导致性能降低。针对这种读多写少的情况,java还提供了另外一个实现----ReentrantReadWriteLock锁的机制ReentrantReadWrite
贪睡的企鹅
·
2019-08-28 22:16
J.U.C
阻塞队列(二) - ArrayBlockingQueue
1概述ArrayBlockingQueued是数组实现的线程安全的有界的阻塞队列。队列按照先进先出(FIFO)的原则对元素进行排序。通过以下关键词分析我们来更深入理解ArrayBlockingQueue1.1如何理解“队列”队列这个概念非常好理解。你可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者先出,这就是典型的“队列”。相对于栈只支持两个基本操作:入栈push()和出
贪睡的企鹅
·
2019-08-26 16:24
关于Java中的Atomic
还有一种办法就是使用
J.U.C
包下的atomic类。Atomic类的原理是什么呢atomic类是通过自旋CAS操作volatile变量实现的。
左高右低
·
2019-08-26 15:45
java
【
J.U.C
】线程池之实现原理
文章首发于:clawhub.club线程池状态线程池的内部状态由AtomicInteger修饰的ctl表示,其高3位表示线程池的运行状态,低29位表示线程池中的线程数量:具体看代码注释。/***Themainpoolcontrolstate,ctl,isanatomicintegerpacking*twoconceptualfields*主池控制状态ctl是一个原子整数,包含两个概念字段:*wor
clawhub
·
2019-07-23 00:44
【
J.U.C
】线程池之工作流程与ThreeadPoolExecutor介绍
文章首发于:clawhub.club线程池工作流程线程池的主要工作流程.png如果当前运行的线程少于corePoolSize,则创建新线程(核心线程)来执行任务。如果运行的线程等于或多于corePoolSize,则将任务加入BlockingQueue。如果BlockingQueue队列已满,则创建新的线程(非核心)来处理任务。如果核心线程与非核心线程总数超出maxiumPoolSize,任务将被拒
clawhub
·
2019-07-21 09:58
J.U.C
之线程池03:源码解析-线程池创建和属性
创建线程属性我们可以通过ThreadPoolExecutor构造函数来创建一个线程池:publicclassThreadPoolExecutorextendsAbstractExecutorService{/***用于记录线程池池的状态和当前待work线程数量*前3位记录线程池状态*后29位记录运行work数量*/privatefinalAtomicIntegerctl=newAtomicInte
贪睡的企鹅
·
2019-07-02 22:49
JAVA并发编程
J.U.C
学习总结
前言学习了一段时间
J.U.C
,打算做个小结,个人感觉总结还是非常重要,要不然总感觉知识点零零散散的。
fromatozhappy
·
2019-06-28 20:59
JAVA
并发容器
J.U.C
ConcurrentHashMap & ConcurrentSkipListMap
和线程不安全容器的对应关系HashMap->ConcurrentHashMapTreeMap->ConcurrentSkipListMapConcurrentHashMap概述不允许空值;针对读做了大量的优化,具有非常高的并发性;关于HashMap和ConcurrentHashMap的详细介绍和比较,见:HashMap与ConcurrentHashMap解析与比较ConcurrentHashMap
乌鲁木齐001号程序员
·
2019-06-27 02:24
初窥AbstractQueuedSynchronizer(未完待续)
前言:AQS是
J.U.C
提供给我们的核心基础组件,可以用它来构建锁和其他装置的基础框架,今天并不是对AQS进行深入的分析,只是从大体上对它有一个初步的认识,更加详细的分析会在后面的文章中不定时更新。
lhsjohn
·
2019-06-24 23:21
Java中Atomic类的使用分析
现在我们有了新的方法,就是使用
J.U.C
包下的atomic类。2:Atomic类的原理是什么呢一句话来说,atomic类是通过自旋CAS操作volatile变量实现的。CAS是co
李斯特王
·
2019-06-17 18:00
线程池没你想的那么简单(续)
这次就实现这三个特性来看看
j.u.c
中的线程池是如何实现这些需求的。再看本文之前,强烈建议先查看上文《线程池没你想的那么简单》任务完
crossoverJie
·
2019-06-06 08:00
线程池没你想的那么简单(续)
这次就实现这三个特性来看看
j.u.c
中的线程池是如何实现这些需求的。再看本文之前,强烈建议先查看上文《线程池没你想的那么简单》任务完
crossoverJie
·
2019-06-06 00:00
并发
线程
线程池
java
上一页
6
7
8
9
10
11
12
13
下一页
按字母分类:
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
其他