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
并发编程系列
深入理解AbstractQueuedSynchronizer只需15张图
前言Java
并发编程系列
第四篇AbstractQueuedSynchronizer,文章风格依然是图文并茂,通俗易懂,本文带读者们深入理解AbstractQueuedSynchronizer设计思想。
程序猿阿星
·
2021-04-16 12:29
java多线程
Java基础
多线程
java
后端
AQS
【
并发编程系列
9】阻塞队列之PriorityBlockingQueue,DelayQueue原理分析
前言前面我们介绍了ArrayBlockingQueue,LinkedBlockingQueue,LinkedBlockingDeque三种阻塞队列,今天继续介绍PriorityBlockingQueue和DelayQueue两个阻塞队列,在介绍这两个阻塞队列之前,需要先了解一种数据结构:二叉堆。因为PriorityBlockingQueue内部使用了最小二叉堆算法来保证每次弹出的元素是最小元素,而
刀哥说Java
·
2021-04-15 07:19
【
并发编程系列
12】从Java线程池的常用4种写法深入分析线程池(Thread Pool)的实现原理
写在前面的话并发编程里面,线程池这个一直就想写一篇文章来总结下,但是直到
并发编程系列
的第12篇才写的原因是线程池里面用到了AQS同步队列和阻塞队列等一些知识,所以为了铺垫,就先把前面的知识点写完了,到现在
刀哥说Java
·
2021-04-14 22:18
写给小白看的LockSupport
前言Java
并发编程系列
第三篇LockSupport,上一篇Synchronized文章中有提过,不推荐读者们使用Object的wait、notify、notifyAll等函数做多线程间的通信协同,使用
程序猿阿星
·
2021-04-06 13:09
java多线程
Java基础
锁
并发编程
多线程
Java
高并发系统的限流策略:漏桶和令牌桶(附源码剖析)
原文链接:高并发系统的限流策略:漏桶和令牌桶(附源码剖析)前言哈喽,大家好,我是正在学习PS技术的asong,这是我
并发编程系列
的第5篇文章,今天与大家聊一聊高并发系统中的限流技术,限流又称为流量控制,
·
2021-03-30 11:59
golang微服务限流
源码剖析sync.WaitGroup(文末思考题你能解释一下吗?)
前言哈喽,大家好,我是asong,这是我
并发编程系列
的第三篇文章,上一篇我们一起分析了sync.once的使用与实现,今天我们一起来看一看sync.WaitGroup的使用与实现.快过年了,这是年前最后一篇推文了
·
2021-03-30 11:28
golangsync并发编程
源码剖析sync.cond(条件变量的实现机制)
前言哈喽,大家好,我是asong,这是我
并发编程系列
的第三篇文章,这一篇我们一起来看看sync.Cond的使用与实现。
·
2021-03-30 11:28
详解并发编程之sync.Once的实现(附上三道面试题)
原文链接:戳这里哈喽,大家好,我是asong,这是我
并发编程系列
的第二篇文章.上一篇我们一起分析了atomic包,今天我们一起来看一看sync/once的使用与实现.什么是sync.onceGo语言标准库中的
·
2021-03-30 11:27
详解并发编程基础之原子操作(atomic包)
最近想写一个
并发编程系列
的文章,使用Go也有一段时间了,但是对并发的理解不是很透彻,借着这次总结,希望能更进一步。
·
2021-03-30 11:27
golang原子性原子操作
BAT面试多线程最常问的一个问题:谈谈你对Synchronized的理解?
前言Java
并发编程系列
第二篇Synchronized,文章风格依然是图文并茂,通俗易懂,本文带读者们由浅入深理解Synchronized,让读者们也能与面试官疯狂对线。
程序猿阿星
·
2021-03-26 12:33
Java基础
java多线程
由浅入深CAS原理,小白也能与BAT面试官对线
前言Java
并发编程系列
番外篇CAS(Compareandswap),文章风格依然是图文并茂,通俗易懂,让读者们也能与面试官疯狂对线。
程序猿阿星
·
2021-03-20 20:34
Java基础
java多线程
java
多线程
小白也能看懂的Java内存模型
前言Java
并发编程系列
开坑了,Java并发编程可以说是中高级研发工程师的必备素养,也是中高级岗位面试必问的问题,本系列就是为了带读者们系统的一步一步击破Java并发编程各个难点,打破屏障,在面试中所向披靡
程序猿阿星
·
2021-03-09 14:39
java多线程
Java基础
java
多线程
java高并发编程艺术_[高并发]Java高
并发编程系列
开山篇--线程实现
Java是最早开始有并发的语言之一,再过去传统多任务的模式下,人们发现很难解决一些更为复杂的问题,这个时候我们就有了并发.引用多线程比多任务更加有挑战。多线程是在同一个程序内部并行执行,因此会对相同的内存空间进行并发读写操作。这可能是在单线程程序中从来不会遇到的问题。其中的一些错误也未必会在单CPU机器上出现,因为两个线程从来不会得到真正的并行执行。然而,更现代的计算机伴随着多核CPU的出现,也就
weixin_39525243
·
2021-02-27 11:53
java高并发编程艺术
透彻理解Java
并发编程系列
本文首发于一世流云专栏:https://segmentfault.com/blog...从本章开始,我们正式进入Java多线程进阶篇的学习。初学者通过基础篇的学习,应该已经对多线程的初步使用有了基本概念和掌握。多线程这块知识的学习,真正的难点不在于多线程程序的逻辑有多复杂,而在于理清J.U.C包中各个多线程工具类之间的关系、特点及其使用场景(从整体到局部、高屋建瓴,这对学习任何知识都至关重要,如果
·
2021-02-23 09:10
java多线程
Java
并发编程系列
——ReentrantLock
基本介绍ReentrantLock是可重入锁,支持当前线程重入;ReentrantLock可以等待中断、可以实现公平锁、可以绑定多个条件;ReentrantLock和synchronized一样属于互斥锁,synchronized是非公平锁,默认情况下ReentrantLock也是不公平的,但可以通过构造函数入参设置为公平锁;ReentrantLock通过lock()方法获得锁,通过unlock(
·
2021-02-21 20:14
java
Java
并发编程系列
——CountDownLatch、CyclicBarrier、Semaphore的使用
CountDownLatch原理:初始化时需要设置一个count变量,await()方法会阻塞当前线程,当其他线程调用CountDownLatch的countDown()方法的次数等于count时,当前线程被唤醒。适用场景:可用于等待多个线程完成操作之后,当前线程继续操作的场景。publicstaticvoidmain(String[]args){CountDownLatchcountDownLa
·
2021-02-21 20:43
java
源码剖析sync.cond(条件变量的实现机制)
前言哈喽,大家好,我是asong,这是我
并发编程系列
的第三篇文章,这一篇我们一起来看看sync.Cond的使用与实现。
·
2021-02-21 15:50
源码剖析sync.WaitGroup(文末思考题你能解释一下吗?)
前言哈喽,大家好,我是asong,这是我
并发编程系列
的第三篇文章,上一篇我们一起分析了sync.once的使用与实现,今天我们一起来看一看sync.WaitGroup的使用与实现.快过年了,这是年前最后一篇推文了
·
2021-02-08 20:29
golangsync并发编程
详解并发编程之sync.Once的实现(附上三道面试题)
原文链接:戳这里哈喽,大家好,我是asong,这是我
并发编程系列
的第二篇文章.上一篇我们一起分析了atomic包,今天我们一起来看一看sync/once的使用与实现.什么是sync.onceGo语言标准库中的
·
2021-02-01 16:51
详解并发编程基础之原子操作(atomic包)
最近想写一个
并发编程系列
的文章,使用Go也有一段时间了,但是对并发的理解不是很透彻,借着这次总结,希望能更进一步。
·
2021-02-01 16:50
golang原子性原子操作
详解并发编程之sync.Once的实现(附上三道面试题)
哈喽,大家好,我是asong,这是我
并发编程系列
的第二篇文章.上一篇我们一起分析了atomic包,今天我们一起来看一看sync/once的使用与实现.什么是sync.onceGo语言标准库中的sync.Once
Sunshine-松
·
2021-01-29 08:00
java
编程语言
go
golang
多线程
并发编程系列
: 线程基础
改不完的Bug,写不完的矫情。公众号杨正友现在专注音视频和APM,涵盖各个知识领域;只做全网最Geek的公众号,欢迎您的关注!线程的合理使用对于Android开发来说,确实非常重要,一年前我也零零散散写了两篇Android讯息邮差-线程和线程切换和锁机制的文章,现在回过头复习,稍微有点浅显,所以准备将这些碎片化的知识点系统整理一下,希望看完整个系列文章的你以后可以自信的告诉我:多线程,我不怕,放马
小木箱
·
2020-11-10 12:41
设计模式
github
【JAVA
并发编程系列
】ThreadLocal
【JAVA
并发编程系列
】ThreadLocal【1】ThreadLocal类结构与关键属性//ThreadLocal定义类时带有泛型,//说明ThreadLocal可以储存任意格式的数据//ThreadLocal
奋斗企鹅CopperSun
·
2020-09-17 12:03
编程语言系列
--
JAVA
ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)
高
并发编程系列
:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)HashMap、CurrentHashMap的实现原理基本都是BAT面试必考内容,阿里P8架构师谈:深入探讨HashMap
Harbourside1
·
2020-09-16 07:44
集合
java
Java
并发编程系列
一:Future和CompletableFuture解析与使用
一、Future模式Java1.5开始,提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。Future接口可以构建异步应用,是多线程开发中常见的设计模式。当我们需要调用一个函数方法时。如果这个函数执行很慢,那么我们就要进行等待。但有时候,我们可能并不急着要结果。因此,我们可以让被调用者立即返回,让他在后台慢慢处理这个请求。对于调用者来说,则可以先处理一些其他任务
weixin_30912051
·
2020-09-15 20:43
java
设计模式
并发编程系列
(三)JMM内存模型及volatile底层实现原理详解
早期计算机中cpu和内存的速度是差不多的,但在现代计算机中,cpu的指令速度远超内存的存取速度,由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样处理器就无须等待缓慢的内存读写了
二码先生
·
2020-09-13 21:23
并发编程
多线程
java
编程语言
并发编程系列
(十四)CAS详解与Unsafe类的应用
我们在前面的
并发编程系列
文章中,提到过CAS但是我们当时没有过多地进行解释,提到CAS我们首先应该理解一下JAVA中的乐观锁,乐观锁就是每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试
二码先生
·
2020-09-13 21:52
并发编程
多线程
java
并发编程
Java
并发编程系列
之二十五:线程池
线程池简介在之前介绍Executor框架的文章中对线程池有一个初步的认识,实际上线程池这种设计思想在Java中很普遍,比如JVM中常量池,以及Web开发使用到的数据库连接池。这些池本质上还是Java中的对象池,因为池中存放的都是Java对象。回到线程池,几乎所有需要异步或者执行并发任务的程序都可以使用到线程池。使用线程池带来的好处主要包括以下几个方面:一,提高资源利用率。由于线程池中的线程使可以重
rhwayfunn
·
2020-09-13 09:47
并发编程
ConcurrentHashMap
高
并发编程系列
:ConcurrentHashMap的实现原理Java:CAS(乐观锁)JDK1.7以前使用分段锁,一个Segment数组和多个HashEntry组成,Segment数组是将一个大的table
neabea2016
·
2020-08-23 17:44
Android
并发编程系列
(一)—多线程基本概念
前言大家好,牧码心从此系列开始将给大家推荐java多线程方面内容,今天给大家推荐一篇Java多线程系列之基础篇(一)—基本概念的文章,希望对你有所帮助。内容如下:多线程概念进程和线程线程的状态几个关键字多线程的注意点概要随着现代操作系统发展,多处理器的诞生,若系统同一时刻只处理一个任务,效率会变得很低,并且不能充分发挥计算机的能力,达到充分利用计算机资源的效果。所以为了更好的利用系统资源,提高任务
greekw
·
2020-08-23 04:07
并发编程
浅谈Java
并发编程系列
(四)—— 原子性、可见性与有序性
Java内存模型是围绕着在并发过程中如何处理原子性、可见性和有序性这3个特征来建立的,我们来看下哪些操作实现了这3个特性。原子性(atomicity):由Java内存模型来直接保证原子性变量操作包括read,load,assign,use,store和write。大致可以认为基本数据类型的访问读写是具有原子性的。如果应用场景需要一个更大范围的原子性保证,Java内存模型还提供了lock和unloc
codershamo
·
2020-08-22 09:34
java
内存
可见性
原子性
jvm
并发编程 — 详解线程池
并发编程—详解线程池博客分类:Javajava多线程编程本文章需要对JDK5Executor框架有所了解,请读者先阅读初解线程池:http://ray-yui.iteye.com/blog/2072463
并发编程系列
文章
南华
·
2020-08-22 01:22
java开发之netty框架
浅谈Java
并发编程系列
(八)—— LockSupport原理剖析
LockSupport用法简介LockSupport和CAS是Java并发包中很多并发工具控制机制的基础,它们底层其实都是依赖Unsafe实现。LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。LockSupport提供park()和unpark()方法实现阻塞线程和解除线程阻塞,LockSupport和每个使用它的线程都与一个许可(permit)关联。permit相当于1,0的开
weixin_33948416
·
2020-08-21 11:23
Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
Java
并发编程系列
:Java并发编程:核心理论Java并发编程:Synchronized及其实现原理Java并发编程:Synchronized底层优化(轻量级锁、偏向锁)Java并发编程:线程间的协作
ankuiba5737
·
2020-08-21 08:15
并发编程系列
之深入理解JUC中AQS(AbstractQueuedSynchronizer)
AQS通过内部实现的FIFO等待队列来完成资源获取线程的等待工作,如果当前线程获取资源事变,AQS则会将当前线程以及等待状态等信息构造成一个Node节点,并将其加入等待队列中,同时会阻塞当前线程;当其它获取到资源的线程释放持有的资源时,则会把等待队列中的线程唤醒,使其再次尝试获取对应的资源。AbstractQueuedSynchronizer同步器队列 首先从源码看一下同步队列的结构/***
时光无声
·
2020-08-20 23:20
java
并发编程
aqs
并发编程系列
之深入理解JUC中AQS(AbstractQueuedSynchronizer)
AQS通过内部实现的FIFO等待队列来完成资源获取线程的等待工作,如果当前线程获取资源事变,AQS则会将当前线程以及等待状态等信息构造成一个Node节点,并将其加入等待队列中,同时会阻塞当前线程;当其它获取到资源的线程释放持有的资源时,则会把等待队列中的线程唤醒,使其再次尝试获取对应的资源。AbstractQueuedSynchronizer同步器队列 首先从源码看一下同步队列的结构/***
时光无声
·
2020-08-20 23:46
java
并发编程
aqs
并发编程系列
(八)AQS同步器条件锁(Condition)加锁与解锁-源码分析
1.Condition接口在Lock接口中有一个newCondition方法;该方法将创建一个绑定在当前Lock对象上的Condition对象,说明Condition对象和Lock对象是对应的,一个Lock对象可以创建多个Condition对象,他们是一对多的关系。Condition接口的出现是为了扩展同步代码块中的wait/notify机制。通常情况下,我们调用wait()方法,主要是因为一定的
二码先生
·
2020-08-17 22:02
并发编程
Java
并发编程系列
之二十八:CompletionService
CompletionService简介CompletionService与ExecutorService类似都可以用来执行线程池的任务,ExecutorService继承了Executor接口,而CompletionService则是一个接口,那么为什么CompletionService不直接继承Executor接口呢?主要是Executor的特性决定的,Executor框架不能完全保证任务执行的
rhwayfunn
·
2020-08-17 15:41
并发编程
java
并发编程系列
第一篇:多核CPU缓存架构
直接开始........1.cpu缓存架构有哪些内容?现代计算机模型是基于-冯诺依曼计算机模型,主要包括五大核心部分,1.控制器,2.运算器,3.存储器,4.输入,5.输出。图如下:再贴一张CPU原理图大致意思是说,CPU在运算数据的时候(比如1+1=2),会首先从CUP寄存器读取数据(速度最快,因为内置在CPU里面),如果没有,就从三级缓存里读取,如果三级缓存也没有,则会经过系统总线及内存总线,
Fire_kr
·
2020-08-17 11:52
IT
java
Java
并发编程系列
之一:并发机制的底层原理
前言并发编程的目的是让程序运行更快,但是使用并发并不定会使得程序运行更快,只有当程序的并发数量达到一定的量级的时候才能体现并发编程的优势。所以谈并发编程在高并发量的时候才有意义。虽然目前还没有开发过高并发量的程序,但是学习并发是为了更好理解一些分布式架构。那么当程序的并发量不高,比如是单线程的程序,单线程的执行效率反而比多线程更高。这又是为什么呢?熟悉操作系统的应该知道,CPU是通过给每个线程分配
weixin_33738578
·
2020-08-17 09:57
并发编程系列
(六)—深入理解CAS和Unsafe类
前言大家好,牧码心今天给大家推荐一篇
并发编程系列
(六)—深入理解CAS和Unsafe类的文章,希望对你有所帮助。
greekw
·
2020-08-15 04:01
并发编程
java
并发编程系列
:wait/notify机制
标签:「我们都是小青蛙」公众号文章如果一个线程从头到尾执行完也不和别的线程打交道的话,那就不会有各种安全性问题了。但是协作越来越成为社会发展的大势,一个大任务拆成若干个小任务之后,各个小任务之间可能也需要相互协作最终才能执行完整个大任务。所以各个线程在执行过程中可以相互通信,所谓通信就是指相互交换一些数据或者发送一些控制指令,比如一个线程给另一个暂停执行的线程发送一个恢复执行的指令,下边详细看都有
weixin_33962621
·
2020-08-14 20:33
Java
并发编程系列
之十六:Lock锁
Lock锁简介Lock锁机制是JDK5之后新增的锁机制,不同于内置锁,Lock锁必须显式声明,并在合适的位置释放锁。Lock是一个接口,其由三个具体的实现:ReentrantLock、ReetrantReadWriteLock.ReadLock和ReetrantReadWriteLock.WriteLock,即重入锁、读锁和写锁。增加Lock机制主要是因为内置锁存在一些功能上局限性。比如无法中断一
rhwayfunn
·
2020-08-14 20:48
并发编程
JAVA
并发编程系列
(六)深入理解AQS原理
并发是程序员必须面对的问题,那我们怎么处理好呢?下面给大家分享一下AQS原理,以便于大家更好的实现并发,减少更多的弯路。所谓的AQS(AbstractQueuedSynchronizer)即是抽象的队列式的同步器,内部定义了很多锁相关的方法,我们熟知的ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore等都是基于AQS来实现的。
帝都Bug卫冕冠军
·
2020-08-12 14:50
线程系列(八)synchronized实现原理与应用
目录1.synchronized的特性2.synchronized的原理3.synchronized的具体实现方式4.32位虚拟机MarkWord图解序号名称链接地址1
并发编程系列
(一)创建线程的三种方式及线程如何完成上下文如何切换
程序员劝退师丶
·
2020-08-12 12:38
线程
Java
并发编程系列
:深入分析AQS原理
文章目录数据结构定义获取锁#Lock.lock->Sync.lock#AQS.acquire->Sync.tryAcquire#addWaiter#acquireQueued释放锁Condition实现原理#await#signalAQS又称为队列同步器,它是用来构建锁或其他同步组件的基础框架,它是实现ReentrangLock、Semaphore等同步工具的基础。本文将会详细的阐述AQS实现的细
TheLudlows
·
2020-08-12 10:35
并发编程
并发编程系列
(四):线程并发包J.U.C和AQS的原理
一、J.U.C简介Java.util.concurrent是在并发编程中比较常用的工具类。1.LockLock是JUC包中最重要的组件,解决synchronized关键字在某些场景的短板。eg.锁修饰的代码块内,调用了同个锁修饰的代码块,锁对象相同,这时候第一个获得锁的代码还没释放,后面又有等待获取锁的代码,就形成死锁状态2.Lock实现Lock本质是一个接口,定义了获取和释放锁的抽象方法。定义了
OpenWorld1
·
2020-08-12 10:46
java
Java
并发编程系列
---线程的构建、启动和停止
一、构造线程在运行线程之前首先要构造一个线程对象,线程对象在构造的时候需要提供线程所需要的属性,如线程所属的线程组、线程优先级、是否是Daemon线程等信息。下面代码摘自java.lang.Thread中对线程进行初始化的部分。privatevoidinit(ThreadGroupg,Runnabletarget,Stringname,longstackSize,AccessControlCont
忘不掉就记着吧
·
2020-08-11 04:19
多线程与高并发
Java
并发编程系列
---LockSupport工具和Condition接口
一、LockSupport工具LockSupport定义了一组的公共静态方法,这些方法提供了最基本的线程阻塞和唤醒功能,而LockSupport也成为构建同步组件的基础工具。LockSupport定义了一组以park开头的方法用来阻塞当前线程,以及unpark(Threadthread)方法来唤醒一个被阻塞的线程。Park有停车的意思,假设线程为车辆,那么park方法代表着停车,而unpark方法
忘不掉就记着吧
·
2020-08-10 02:22
多线程与高并发
condition
aqs
java
多线程
队列
Java
并发编程系列
---可重入锁和读写锁的实现原理、源码分析
一、重入锁1.1什么是重入锁重入锁ReentrantLock,就是支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁。除此之外,该锁的还支持获取锁时的公平和非公平性选择。1.2重入锁有什么用例子:之前AQS的一个自己实现的锁packagecom.example.demo.thread;importjava.util.concurrent.TimeUnit;importjava.util.c
忘不掉就记着吧
·
2020-08-10 02:22
多线程与高并发
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
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
其他