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锁、CAS
一、Java锁1.常见的锁有synchronized和Lock()①synchronized是jvm层面实现的,可以直接用,不过要锁住某个对象;lock是属于
j.u.c
包下的接口,用的时候要实现lock
Tiantian_126
·
2018-08-27 16:47
锁相关
j.u.c
中atomic实现原理
一.atomic包与JMM并发包下的atomic下的有很多支持原子性的类:AtomicBoolean,AtomicInteger,AtomicLong,AtomicReference…等等,如果你在代码中使用一个他们中的一个做为变量的话,可以让这个变量变成所有线程都共享的,都可见的.这里不得不要数一下,java内存模型(JMM),通常来说我们启动程序时使用的启动参数一般是:-Xms512m-Xmx
Mr_Hou2016
·
2018-08-21 11:26
java并发包源码阅读
[Java源码][并发
J.U.C
]---解析ThreadLocal
前言本文将以一个例子开头简单看看ThreadLocal类的特性,进而分析该类的源代码.本文源码下载例子启动三个线程,每个线程的操作都是使用静态变量count把原先的值加1.packagecom.com.example.threadlocal;importjava.util.concurrent.TimeUnit;publicclassTestThreadLocal{staticThreadLoca
nicktming
·
2018-08-21 01:06
(六)Java并发学习笔记--并发容器(
J.U.C
)
JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器时,吞吐量严重降低。因此Java5.0开始针对多线程并发访问设计,提供了并发性能较好的并发容器,引入了java.util.concurrent包。与Vector和Hashta
匆匆岁月
·
2018-08-14 20:26
Java并发编程-看懂AQS的前世今生
1、AQS产生背景通过JCP的JSR166规范,Jdk1.5开始引入了
j.u.c
包,这个包提供了一系列支持并发的组件。
lingjiango
·
2018-08-12 21:00
【死磕Java并发】—–
J.U.C
之AQS(一篇就够了)
https://mp.weixin.qq.com/s?__biz=MzU2NjIzNDk5NQ==&mid=2247484289&idx=1&sn=56ad0dd81fb2b4e4f86c5aaaaf3164a6&scene=21#wechat_redirect作者:大明哥原文地址:http://cmsblogs.com越是核心的东西越是要反复看,本文篇幅较长,希望各位细细品读,来回多读几遍理解下
乔志勇笔记
·
2018-07-26 15:07
多线程
由AbstractQueuedSynchronizer和ReentrantLock来看模版方法模式
volatile和CAS之后,近几天在撸AbstractQueuedSynchronizer(AQS)的源代码,很多并发工具都是基于AQS来实现的,这也是并发专家DougLea的初衷,通过写一个这样的基础工具来提高
j.u.c
lingjiango
·
2018-07-22 14:00
死磕Java并发:
J.U.C
之Java并发容器:ConcurrentLinkedQueue
作者:chenssy来源:Java技术驿站要实现一个线程安全的队列有两种方式:阻塞和非阻塞。阻塞队列无非就是锁的应用,而非阻塞则是CAS算法的应用。下面我们就开始一个非阻塞算法的研究:CoucurrentLinkedQueue。ConcurrentLinkedQueue是一个基于链接节点的无边界的线程安全队列,它采用FIFO原则对元素进行排序。采用“wait-free”算法(即CAS算法)来实现的
程序猿DD_
·
2018-07-19 07:36
J.U.C
之AQS介绍
AQS简单介绍: AQS(AbstractQueuedSynchronizer)即队列同步器。它是构建锁或者其他同步组件的基础框架(如ReentrantLock,ReentrantReadWriteLock,Semaphore等),JUC并发包的作者期望它能够成为实现大部分同步需求的基础。它是JUC并发包中的核心基础组件。 队列同步器AbstractQueuedSynchronizer
ThreadNew
·
2018-07-06 15:58
Java
多线程
Java多线程
JAVA并发编程与高并发解决方案 - 并发编程 五 之
J.U.C
组件拓展
-并发编程一之并发相关知识JAVA并发编程与高并发解决方案-并发编程二之线程安全性、安全发布对象JAVA并发编程与高并发解决方案-并发编程三之线程安全策略JAVA并发编程与高并发解决方案-并发编程四之
J.U.C
chuIllusions丶
·
2018-07-06 09:15
死磕Java并发:
J.U.C
之重入锁:ReentrantLock
ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于synchronized的使用,但是ReentrantLock提供了比synchronized更强大、灵活的锁机制,可以减少死锁发生的概率。API介绍如下:一个可重入的互斥锁定Lock,它具有与使用synchronized方法和语句所访问的隐式监视器锁定相同的一些基本行为和语义,但功能更强大。ReentrantLock将
程序猿DD_
·
2018-06-19 17:00
Java
J.U.C
中的 AQS 组件
AbstractQueuedSynchronizer-AQSjdk1.5JUC的重中之重,实现原理:1、提供了基于:FirstinFirstOut队列Queue2、底层是双向列表队列设计:1)使用Node实现FIFO队列,可以用于构建或者其他同步装置的基础框架。2)利用了一个int类型表示状态3)使用方法是继承4)子类通过继承并通过实现它的方法管理其状态acquire和release5)可以同时实
Marlon666
·
2018-06-16 11:35
Java中CAS学习记录
在DougLea大神提供的
J.U.C
并发包中,可以说CAS是实现整个
J.U.C
包的基石。在CAS方法中,有三个操作数,当前的内存值V,
cl534854121
·
2018-06-10 23:00
Java并发--AQS源码分析
2.2独占模式下获取共享资源2.2.1直接获取了共享资源的操作权2.2.2没有获取了共享资源的操作权2.3独占模式下释放共享资源2.3.1释放资源三、共享模式3.1共享模式获得资源如果说CAS操作,是
J.U.C
CringKong
·
2018-06-03 22:16
java多线程
Java并发--Java中的CAS操作和实现原理
这几天准备梳理一下Java多线程和并发的相关知识,主要是系统的梳理一下
J.U.C
包里的一些东西,特别是以前看过很多遍的AQS和实现类,还有各种并发安全的集合类。
CringKong
·
2018-06-01 10:22
jvm原理
java多线程
JAVA并发编程与高并发解决方案 - 并发编程 二 之 线程安全性、安全发布对象
2018.5.29chuIllusions修改错别字以及内容补充相关文章JAVA并发编程与高并发解决方案-并发编程一之并发相关知识JAVA并发编程与高并发解决方案-并发编程三之线程安全策略JAVA并发编程与高并发解决方案-并发编程四之
J.U.C
chuIllusions丶
·
2018-05-08 15:33
Java多线程之synchronized及其优化
Synchronized和同步阻塞synchronized是jvm提供的同步和锁机制,与之对应的是jdk层面的
J.U.C
提供的基于AbstractQueuedSynchronizer的并发组件。
chr1sgong
·
2018-05-06 21:39
J.U.C
之AQS
一、AbstractQueuedSynchronizer-AQS(
J.U.C
核心)提供了一个FIFO队列SyncQueue,可用于构建锁,或其他相关同步机制的基础框架,底层使用双向链表实现队列。
sir李
·
2018-05-06 20:36
JAVA并发编程与高并发解决方案 - 并发编程 一 之 并发相关介绍
JAVA并发编程与高并发解决方案-并发编程五版本作者内容2018.7.4chuIllusionsJ.U.C组件拓展
J.U.C
组件拓展FutureTaskIntroduction FutureTask这个组件是
楚丶迷梦
·
2018-05-06 17:36
concurrent
「死磕Java并发」—–
J.U.C
之AQS(一篇就够了)
J.U.C
之AQS传送门【死磕Java并发】—–
J.U.C
之AQS(一篇就够了),作为同步组件的基础,AQS做了太多的工作,自定义同步组件只需要简单地实现自定义方法,然后加上AQS提供的模板方法,就可以实现强大的自定义同步组件
AliceSmith1
·
2018-04-27 17:00
java
Java
J.U.C
并发包(3)——从JVM的角度来理解JMM
Java内存区域Java内存区域是真实存在的,是JVM再运行程序期间将自动管理的内存划分为5个不同的区域。Java内存区域划分图如下所示:线程数据私有区域:随着线程产生和消亡,不需要过多考虑内存回收问题,在编译时确定所需内存大小方法区:方法区属于线程共享的数据区域,主要用于存储已被虚拟机加载的类信息:常量、静态变量、即时编译器编译后的代码等数据。当方法区无法满足内存分配需求时,将抛出OutOFMe
想当厨子的程序媛
·
2018-04-22 20:02
J.U.C源码
Java
J.U.C
并发包(1)——
J.U.C
并发包综述
J.U.C
包类图图片来源:http://www.blogjava.net/xylz/archive/2010/06/30/324915.htmlJava多线程相关类的实现都在Java的并发包中,该包的位置是
想当厨子的程序媛
·
2018-04-21 18:14
J.U.C源码
Java并发48:并发集合系列-基于CAS算法的非阻塞双向无界队列ConcurrentLinkedDueue
:并发集合系列-序章]原文地址:https://www.jianshu.com/p/602b3240afafConcurrentLinkedDeque是双向链表结构的无界并发队列,从JDK7开始加入到
J.U.C
hanchao5272
·
2018-04-15 11:09
Java并发
Java并发学习实例
并发十二:CountDownLatch、CyclicBarrier、Semaphore实现分析
J.U.C
中提供了三个同步工具CountDownLatch、CyclicBarrier、Semaphore,都是共享锁的特殊应用,用来进行线程的任务协调。
wangjie2016
·
2018-04-14 15:17
并发八: ReentrantLock实现分析
J.U.C
中的ReentrantLock、ReentrantReadWriteLock需要手动的进行加锁和解锁,与synchronized相呼应通常称之为显式锁。
wangjie2016
·
2018-04-14 15:58
并发编程与高并发解决方案学习(
J.U.C
之BlockingQueue)
前言:在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作用大致
Andy2019
·
2018-04-04 08:27
并发编程
Java并发编程
并发编程与高并发解决方案学习(
J.U.C
之Future、FutureTask、ForkJoin)
Callable与Runnable接口对比Future接口importlombok.extern.slf4j.Slf4j;importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurr
Andy2019
·
2018-04-04 08:12
并发编程
Java并发编程
并发编程与高并发解决方案学习(
J.U.C
之ReentrantLock与锁)
ReentrantLock(可重入锁)和Synchronized区别※可重入性两者差别不大※锁的实现Synchronized是JVM实现,ReentrantLock是JDK实现※性能的区别Synchronized引入偏向锁,轻量级锁等之后两者效率差不多※功能区别1.便利性Synchronized使用方便2.锁的细粒度和灵活度ReentrantLock更优化ReentrantLock独有的功能1.可
Andy2019
·
2018-04-04 08:00
并发编程
Java并发编程
并发编程与高并发解决方案学习(
J.U.C
之CyclicBarrier、Exchanger)
也是一个同步辅助类,它允许一组线程相互等待直到到达某个公共的屏障点,通过它可以完成多个线程之间相互等待,只有当每个线程都准备就绪后才能各自继续往下执行后面的操作,和CountDownLoatch有相似的地方,都是通过计数器实现的,当某个线程调用了await方法之后,该线程就进入了等待状态,而且计数器加1,它又叫做循环屏障,适合多线程计算数据,最后合并计算结果的应用场景importlombok.ex
Andy2019
·
2018-04-03 20:48
并发编程
Java并发编程
并发编程与高并发解决方案学习(
J.U.C
之AQS-CountDownLatch、Semaphore)
※使用Node实现FIFO队列,可以用于构建锁或者其他同步装置的基础框架※利用int类型表示状态state=0表示还没有线程获取锁state=1表示有现成获取锁,大于1表示可重入锁数量※使用方法是继承AQS使用模板方法模式,继承模板方法,复写其中的方法※子类通过继承并通过实现它的方法管理其状态{acquire和release}的方法操作状态※可以同时实现排它锁和共享锁模式(独占、共享)AQS同步组
Andy2019
·
2018-04-03 17:17
并发编程
Java并发编程
Java中atomic包中的原子操作类总结
实际上,在
J.U.C
下的atom
你听___
·
2018-03-20 17:31
聊聊Java进阶之并发基础技术—线程池剖析
在JDK中,
J.U.C
并发包下的ThreadPoolExecutor核心类是一种基于Executor接口的线程池框架,将任务提交和任务执行解耦设计,其中ExecutorService和其各种实现类提供了非常方便的方式来提交任务并获取任务执行结果
癫狂侠
·
2018-03-10 10:51
Java并发编程之Future,ExecutorService,Callable讲解实例
并发接口位置:java/util/concurrent(多线程并发,
J.U.C
):接口:Callable(类似Runnable),Executor(线程池),Future(线程执行结果),FutureTask
小谢backup
·
2018-02-17 15:10
java
高并发
深入理解java中的锁
一种是JVM帮我们实现的,通过synchronized关键字来进行加锁,另外一种是
J.U.C
包中的Lock接口,该接口中的两个常用的用来加锁和解锁的方法为
逅弈
·
2018-02-06 20:31
【死磕Java并发】——
J.U.C
之读写锁ReentrantReadWriteLock
概述重入锁ReentrantLock是一中排它锁,它是指同一个线程在获取到锁之后还能再次获取这个锁,背后实际增加的是这个锁的同步状态State.读写锁ReentrantReadWriteLock则是内部维护了一对锁——读锁和写锁。写锁是排他的,读锁是可共享的。通过分离读锁和写锁,使得并发性比一般的排他锁有了较大的提升:在同一时间可以允许多个读线程同时访问,但是在写线程访问时,所有读线程和写线程都会
1Q84emo
·
2018-02-04 16:59
源码分析
【死磕Java并发】——
J.U.C
之重入锁:ReentrantLock
锁介绍ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它等同于sychronized,但提供比关键字synchrozied更强大、更灵活的锁机制,性能也能好。API介绍如下:一个可重入的互斥锁定Lock,它具有与使用synchronized方法和语句所访问的隐式监视器锁定相同的一些基本行为和语义,但功能更强大。ReentrantLock将由最近成功获得锁定,并且还没有释放该锁定的
1Q84emo
·
2018-02-04 09:53
源码分析
【死磕Java并发】-----
J.U.C
之线程池:ThreadPoolExecutor
原文出处http://cmsblogs.com/『chenssy』作为Executor框架中最核心的类,ThreadPoolExecutor代表着鼎鼎大名的线程池,它给了我们足够的理由来弄清楚它。下面我们就通过源码来一步一步弄清楚它。内部状态线程有五种状态:新建,就绪,运行,阻塞,死亡,线程池同样有五种状态:Running,SHUTDOWN,STOP,TIDYING,TERMINATED。priv
踩在浪花上看浪
·
2018-01-09 23:53
J.U.C
中的读写锁
而
J.U.C
中的读写锁实现了读锁/写锁的分离。(注意:锁
徐士林
·
2017-12-05 18:21
J.U.C
源码阅读之ReentrantReadWriteLock
一、框架图:框架图从中可以看出:(01)ReentrantReadWriteLock实现了ReadWriteLock接口。ReadWriteLock是一个读写锁的接口,提供了"获取读锁的readLock()函数"和"获取写锁的writeLock()函数"。(02)ReentrantReadWriteLock中包含:sync对象,读锁readerLock和写锁writerLock。读锁ReadLoc
Stone_soul
·
2017-12-05 05:08
【死磕Java并发】-----
J.U.C
之线程池:ScheduledThreadPoolExecutor
原文出处http://cmsblogs.com/『chenssy』在上篇博客【死磕Java并发】-----
J.U.C
之线程池:ThreadPoolExecutor已经介绍了线程池中最核心的类ThreadPoolExecutor
chenssy
·
2017-10-08 21:21
【死磕Java并发】-----
J.U.C
之线程池:ThreadPoolExecutor
原文出处http://cmsblogs.com/『chenssy』作为Executor框架中最核心的类,ThreadPoolExecutor代表着鼎鼎大名的线程池,它给了我们足够的理由来弄清楚它。下面我们就通过源码来一步一步弄清楚它。内部状态线程有五种状态:新建,就绪,运行,阻塞,死亡,线程池同样有五种状态:Running,SHUTDOWN,STOP,TIDYING,TERMINATED。priv
chenssy
·
2017-10-07 22:01
【死磕Java并发】-----
J.U.C
之线程池:线程池的基础架构
原文出处http://cmsblogs.com/『chenssy』经历了Java内存模型、JUC基础之AQS、CAS、Lock、并发工具类、并发容器、阻塞队列、atomic类后,我们开始JUC的最后一部分:线程池。在这个部分你将了解到下面几个部分:线程池的基础架构线程池的原理分析线程池核心类的源码分析线程池调优Executor我们先看线程池的基础架构图:ExecutorExecutor,任务的执行
chenssy
·
2017-10-06 21:22
死磕Java
【死磕Java并发】-----
J.U.C
之阻塞队列:BlockingQueue总结
原文出处http://cmsblogs.com/『chenssy』经过前面六篇博客的阐述,我想各位应该对阻塞队列BlockingQueue有了较为深入的理解,下面来一个总结,先看整个类图:BlockingQueueBlockingQueue接口实现Queue接口,它支持两个附加操作:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。相对于同一操作他提供了四种机制:抛出异常、返回特殊值、阻
chenssy
·
2017-10-04 18:06
死磕Java
【死磕Java并发】-----
J.U.C
之阻塞队列:BlockingQueue总结
原文出处http://cmsblogs.com/『chenssy』经过前面六篇博客的阐述,我想各位应该对阻塞队列BlockingQueue有了较为深入的理解,下面来一个总结,先看整个类图:BlockingQueue类图BlockingQueueBlockingQueue接口实现Queue接口,它支持两个附加操作:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。相对于同一操作他提供了四种
chenssy
·
2017-10-04 18:01
【死磕Java并发】-----
J.U.C
之阻塞队列:LinkedTransferQueue
原文出处http://cmsblogs.com/『chenssy』前面提到的各种BlockingQueue对读或者写都是锁上整个队列,在并发量大的时候,各种锁是比较耗资源和耗时间的,而前面的SynchronousQueue虽然不会锁住整个队列,但它是一个没有容量的“队列”,那么有没有这样一种队列,它即可以像其他的BlockingQueue一样有容量又可以像SynchronousQueue一样不会锁
chenssy
·
2017-09-24 20:16
死磕Java
【死磕Java并发】-----
J.U.C
之阻塞队列:SynchronousQueue
原文出处http://cmsblogs.com/『chenssy』【注】:SynchronousQueue实现算法看的晕乎乎的,写了好久才写完,如果当中有什么错误之处,忘各位指正作为BlockingQueue中的一员,SynchronousQueue与其他BlockingQueue有着不同特性:SynchronousQueue没有容量。与其他BlockingQueue不同,SynchronousQ
chenssy
·
2017-08-18 16:22
死磕Java
【死磕Java并发】-----
J.U.C
之阻塞队列:DelayQueue
原文出处http://cmsblogs.com/『chenssy』DelayQueue是一个支持延时获取元素的无界阻塞队列。里面的元素全部都是“可延期”的元素,列头的元素是最先“到期”的元素,如果队列里面没有元素到期,是不能从列头获取元素的,哪怕有元素也不行。也就是说只有在延迟期到时才能够从队列中取元素。DelayQueue主要用于两个方面:-缓存:清掉缓存中超时的缓存数据-任务超时处理Delay
chenssy
·
2017-08-14 21:07
死磕Java
【死磕Java并发】-----
J.U.C
之阻塞队列:PriorityBlockingQueue
原文出处http://cmsblogs.com/『chenssy』我们知道线程Thread可以调用setPriority(intnewPriority)来设置优先级的,线程优先级高的线程先执行,优先级低的后执行。而前面介绍的ArrayBlockingQueue、LinkedBlockingQueue都是采用FIFO原则来确定线程执行的先后顺序,那么有没有一个队列可以支持优先级呢?PriorityB
chenssy
·
2017-07-31 09:34
【死磕Java并发】-----
J.U.C
之阻塞队列:PriorityBlockingQueue
原文出处http://cmsblogs.com/『chenssy』我们知道线程Thread可以调用setPriority(intnewPriority)来设置优先级的,线程优先级高的线程先执行,优先级低的后执行。而前面介绍的ArrayBlockingQueue、LinkedBlockingQueue都是采用FIFO原则来确定线程执行的先后顺序,那么有没有一个队列可以支持优先级呢?PriorityB
chenssy
·
2017-07-31 08:16
死磕Java
【死磕Java并发】-----
J.U.C
之阻塞队列:ArrayBlockingQueue
原文出处http://cmsblogs.com/『chenssy』ArrayBlockingQueue,一个由数组实现的有界阻塞队列。该队列采用FIFO的原则对元素进行排序添加的。ArrayBlockingQueue为有界且固定,其大小在构造时由构造函数来决定,确认之后就不能再改变了。ArrayBlockingQueue支持对等待的生产者线程和使用者线程进行排序的可选公平策略,但是在默认情况下不保
chenssy
·
2017-07-23 10:30
死磕Java
上一页
8
9
10
11
12
13
14
15
下一页
按字母分类:
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
其他