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
------【Java并发】
Java 并发包原子操作类解析
Java并发
包原子操作类解析前言JUC包中提供了一些列原子操作类,这些类都是使用非阻塞算法CAS实现的,相比使用锁实现原子性操作在性能上有较大提高。
·
2022-01-05 16:11
Java并发
编程——ReentrantLock实现原理
一、前言ReentrantLock主要利用CAS+AQS队列来实现。它支持公平锁和非公平锁,两者的实现类似。CAS:CompareandSwap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe
小波同学
·
2022-01-04 19:22
Java并发
编程——volatile原理
前言Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。在访问volatile变量时不会执行
小波同学
·
2022-01-04 17:51
JAVA并发
编程——ThreadLocal的介绍、使用及源码分析
1.ThreadLocal是什么2.ThreadLocal能干什么3.ThreadLocal在生产中的应用4.ThreadLocal源码分析5.ThreadLocal内存泄露问题6.总结1.ThreadLocal是什么在开始了解ThreadLocal是什么之前,我们可以在java里搜一下这个类,看一下源码的注释:意思大概就是:ThreadLocal提供了线程私有的局部变量,这些变量不同于普通变量,
·
2022-01-04 17:56
JAVA并发
编程——AbstractQueuedSynchronizer之AQS概念和源码阅读
1.AQS是什么2.能干什么3.AQS为什么是JUC内容中最重要的基石4.AQS内部体系架构5.从我们的ReentrantLock开始解读AQS6.总结1.AQS是什么AQS————全称AbstractQueuedSynchronizer,抽象队列同步器。我们可以看一下源码中的解释:意思就是说,它是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC的基石,通过内置的FIFO队列来完成资源获取
·
2021-12-29 17:14
java并发编程aqs
难搞的偏向锁终于被 Java 移除了
背景在JDK1.5之前,面对
Java并发
问题,synchronized是一招鲜的解决方案:普通同步方法,锁上当前实例对象静态同步方法,锁上当前类Class对象同步块,锁上括号里面配置的对象拿同步块来举例
·
2021-12-29 11:10
java
难搞的偏向锁终于被 Java 移除了
背景在JDK1.5之前,面对
Java并发
问题,synchronized是一招鲜的解决方案:普通同步方法,锁上当前实例对象静态同步方法,锁上当前类Class对象同步块,锁上括号里面配置的对象拿同步块来举例
·
2021-12-29 09:29
java
JAVA并发
编程——线程中断机制与interrupt()
1.线程中断是什么2.中断的相关API方法3.通过一个volatile变量实现线程中断4.通过Thread类自带的中断api方法实现5.当前线程的中断标识为true,是不是就立刻停止?6.静态方法Thread.interrupted()介绍7.总结1.线程中断是什么我们都知道,JAVA启动一个线程很容易,而且我们都是通过线程结束之后才停止,但是我们会不会有这样一种情况,那就是线程在运行到一半的时候
·
2021-12-27 14:51
java多线程中断
JAVA并发
编程——生产者与消费者模式(传统版&阻塞队列版)
1.前言2.生产者与消费者模型传统版代码示例3.生产者与消费者模型阻塞队列版代码示例1.前言今天我们要用两种方式来实现生产者和消费者模式,我们要先介绍一个概念,生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而是通过消息队列进行通讯,所以生产者生产完数据后不用等待消费者处理,而是直接扔给队列,消费者不找生产者要数据,而是直接从队列里取数据,队列相
·
2021-12-26 12:22
java多线程设计模式
JAVA并发
编程——Synchronized与Lock的区别以及Lock的使用
1.Synchronized与Lock的区别2.Condition的基础概念3.使用Condition循环顺序打印ABC1.Synchronized与Lock的区别我们可能对于Condition类都比较陌生,所以我们从我们比较熟悉的Synchronized开始对比着学习。我们都知道Synchronized都有下图这三个使用方法:首先是我们已知的最熟练的synchronized关键字,他是保证线程同
·
2021-12-26 12:22
JAVA并发
编程——线程等待唤醒机制与LockSupport
方法实现线程的等待和唤醒4.Object和Condition使用的限制条件5.LockSupport类简介6.LockSupport类中的park等待和unpark唤醒7.总结1.线程等待唤醒机制概述通过前面两篇博客:
JAVA
·
2021-12-26 12:22
javajuc并发编程lock
JAVA并发
编程——从字节码角度分析synchronized实现
1.idea查看字节码jclasslib插件安装2.从字节码角度分析synchronized实现3.总结1.idea查看字节码jclasslib插件安装synchronize这个关键字我们肯定已经不陌生了,接下来我们从字节码这个角度来进行剖析一下,它为什么会有加锁的效果。我们先安装一下jclasslib插件,方便我们查看java的字节码。点击view-->showBytecodeWithJclas
·
2021-12-26 12:50
Java并发
编程深入理解之Synchronized的使用及底层原理详解 下
synchronized锁优化1、自旋锁与自适应自旋2、锁消除逃逸分析:3、锁粗化二、对象头内存布局三、synchronized锁的膨胀升级过程1、偏向锁2、轻量级锁3、重量级锁4、各种锁的优缺点接着上文《
Java
·
2021-12-22 13:48
JAVA并发
编程——CompletableFuture的方法介绍和使用
1.CompletableFuture的方法简介和使用2.总结1.CompletableFuture的方法简介和使用从上面那篇博客
JAVA并发
编程——Future和CompletableFuture的简介与使用我们对
·
2021-12-22 10:39
JAVA并发
编程——Callable接口和FutureTask简介和使用
1.Callable接口简介2.FutureTask类简介3.Callable接口使用1.Callable接口简介在介绍Callable接口之前,我们先回顾一下我们很熟悉的Runnable接口:我们想要使用线程的时候,很多时候都是先实现Runnable接口,然后重写run方法,如下所示:publicclassRunnableDemoimplementsRunnable{@Overridepubli
·
2021-12-21 15:14
java多线程
JAVA并发
编程——Future和CompletableFuture的简介与使用
1.Future类简介2.Future类的使用3.CompletableFuture类的简介4.CompletableFuture类的的使用5.总结1.Future类简介我们之前在这篇文章
JAVA并发
编程
·
2021-12-21 15:33
java 并发线程个数的如何确定
目录
java并发
线程个数的确定cpu密集型io密集型有锁的情况java线程池线程数量确定思路多线程可以快速执行任务的原理创建线程池需要的参数确定线程数
java并发
线程个数的确定本文从控制变量的角度来谈决定线程个数的依据
·
2021-12-20 14:20
Java并发
编程——LinkedBlockingDeque
一、阻塞队列BlockingQueue在java.util.concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。1.1、BlockingQueue的基本原理先来解释一下阻塞队列:如上图:1、生产线程1往阻塞队列里面添加新的数据,当阻塞队列满的时候(针对有界队列),
小波同学
·
2021-12-19 01:13
Java并发
编程——CyclicBarrier
一、CyclicBarrier循环栅栏CyclicBarrier是java.util.concurrent包下面的一个工具类,字面意思是可循环使用(Cyclic)的屏障(Barrier),通过它可以实现让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,所有被屏障拦截的线程才会继续执行。CyclicBarrier循环栅栏和CountDownLatch很类似,都能阻塞一组线
小波同学
·
2021-12-12 15:04
看看我给面试官是如何娓娓道来synchronized锁升级过程的
Java并发
编程Day8本篇总结的是如何在Java中避免创建不必要的对象,后续会每日更新~关于《我们一起学Redis》、《我们一起学HarmonyOS》等知识点可以查看我的往期博客相信自己,越活越坚强,
李子捌
·
2021-12-06 09:09
《并发编程》系列
java
后端
并发编程
并发
深入理解
Java并发
内存模型
Java内存模型是什么Java内存模型翻译自JavaMemoryModel,也称Java多线程内存模型,简称:JMM,它是为了解决Java多线程并发、CPU高速缓存等内容而引入的一套规则,这里需要注意不要将它与JVM内存结构混淆。为什么要有Java内存模型在介绍JMM时,先看《深入理解Java虚拟机》中的一张图,如下:jmm.png上图描述的意思是,在每一个线程中,都会有一块内部的工作内存(wor
有没有口罩给我一个
·
2021-12-03 10:02
java并发
编程(三)java线程状态与方法
一、线程的状态1.1操作系统层面在操作系统层面有五种状态:操作系统层面的线程状态.png【初始状态】仅是在语言层面创建了线程对象,还未与操作系统线程关联【可运行状态】(就绪状态)指该线程已经被创建(与操作系统线程关联),可以由CPU调度执行【运行状态】指获取了CPU时间片运行中的状态。当CPU时间片用完,会从【运行状态】转换至【可运行状态】,会导致线程的上下文切换【阻塞状态】如果调用了阻塞API,
我犟不过你
·
2021-11-30 16:45
Java并发
编程的艺术 -- 线程池和Executor框架(第九、十章)
文章目录1、线程池1.1、为什么使用线程池?1.2、线程池的实现原理1.3、excute()方法源码分析1.4、工作线程1.5、线程池的创建1.6、execute()和submit()方法1.7、关闭线程池2、Executor框架2.1、Executor框架简介2.1.1、Executor框架的两级调度模型2.1.2、Executor框架的结构2.1.3、Executor框架的使用2.1.4、Ex
崇尚学技术的科班人
·
2021-11-30 14:35
JUC
java
开发语言
后端
Java并发
编程的艺术 -- 原子操作类和并发工具类(第七、八章)
文章目录1、原子操作类1.1、原子更新基本类型1.1.1、原子更新基本类型常用类1.1.2、AtomicInteger的常用方法1.1.3、AtomicInteger的使用1.1.4、getAndIncrement是如何实现原子操作的呢?1.1.5、AtomicInteger类的原理1.2、原子更新数组1.2.1、原子更新数组常用类1.2.2、AtomicIntegerArray的使用1.3、原子
崇尚学技术的科班人
·
2021-11-29 09:14
JUC
java
开发语言
后端
《重学Java高并发》Sempahore的使用场景与常见误区
JUC,
java并发
框架也是面试中的常客,而Se
中间件兴趣圈
·
2021-11-28 22:00
浅谈
Java并发
中ReentrantLock锁应该怎么用
目录1、重入锁说明2、中断响应说明3、锁申请等待限时tryLock(long,TimeUnit)tryLock()4、公平锁说明源码(JDK8)重入锁可以替代关键字synchronized。在JDK5.0的早期版本中,重入锁的性能远远优于关键字synchronized,但从JDK6.0开始,JDK在关键字synchronized上做了大量的优化,使得两者的性能差距并不大。重入锁使用Reentran
·
2021-11-28 15:38
Java并发
中死锁、活锁和饥饿是什么意思
解答死锁是指两个或者两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,他们将无法推进下去。如果线程的智力不够,且都秉承着“谦让”的原则,主动将资源释放给他人使用,那么就会导致资源不断地在两个线程间跳动,而没有一个线程可以同时拿到所有资源正常执行。这种情况就是活锁。饥饿是指某一个或者多个线程因为种种原因无法获得所需要的资源,导致一直无法执行。比如它的线程优先级
·
2021-11-28 15:38
为什么不想做Java了, 现在Java面试怎么这么难,从自身找原因,java编程技术开发题库
…3、
Java并发
什么是可重入锁、乐观锁、悲观锁、公平锁、非公平锁、独占锁、共享锁?讲讲ThreadLocal的实现原理?ThreadLocal作为变量的线程隔离方式,其内部是如何做的?
m0_64384202
·
2021-11-27 11:39
程序员
面试
java
后端
Java并发
编程之ConcurrentLinkedQueue源码详解
目录一、ConcurrentLinkedQueue介绍二、构造方法三、入队四、出队五、总结一、ConcurrentLinkedQueue介绍并编程中,一般需要用到安全的队列,如果要自己实现安全队列,可以使用2种方式:方式1:加锁,这种实现方式就是我们常说的阻塞队列。方式2:使用循环CAS算法实现,这种方式实现队列称之为非阻塞队列。从点到面,下面我们来看下非阻塞队列经典实现类:ConcurrentL
·
2021-11-24 15:48
Java并发
JUC——synchronized和Lock
synchronizedsynchronized作用原子性:synchronized保证语句块内操作是原子的。可见性:synchronized保证可见性(通过“在执行unlock之前,必须先把此变量同步回主内存”实现)。有序性:synchronized保证有序性(通过“一个变量在同一时刻只允许一条线程对其进行lock操作”)。synchronized的三种应用方式1、修饰实例方法,作用于当前实例加
小波同学
·
2021-11-23 11:13
并发编程之Java内存模型锁的内存语义
1、锁的释放-获取建立的happens-before关系锁是
Java并发
编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。锁释放-获
·
2021-11-22 17:53
Java并发
编程之Java内存模型
目录1、什么是Java的内存模型2、为什么需要Java内存模型3、Java内存模型及操作规范4、Java内存模型规定的原子操作5、Java内存模型同步协议6、Java内存模型的HB法则JMM的HB法则总结1、什么是Java的内存模型Java内存模型简称JMM(JavaMemoryModel),JMM是和多线程并发相关的一组规范。各个jvm实现都要遵循这个JMM规范。才能保证Java代码在不同虚拟机
·
2021-11-22 17:50
详解
Java并发
编程之volatile关键字
目录1、volatile是什么?2、并发编程的三大特性3、什么是指令重排序?4、volatile有什么作用?5、volatile可以保证原子性?6、volatile和synchronized对比总结1、volatile是什么?首先简单说一下,volatile是什么?volatile是Java中的一个关键字,也是一种同步机制。volatile为了保证变量的可见性,通过volatile修饰的变量具有共
·
2021-11-22 17:49
Java并发
编程系列之LockSupport的用法
目录1、什么是LockSupport?2、两类基本API3、LockSupport本质4、LockSupport例子5、LockSupport源码总结1、什么是LockSupport?LockSupport是用于创建锁和其他同步类的基本线程阻塞原语2、两类基本APILockSupport提供了两类最基本的API:block线程类:一般都是以pack开头的方法名,pack*(...)pack方法有两
·
2021-11-22 17:18
Java Synchronized 偏向锁/轻量级锁/重量级锁的演变过程
地中断线程-实践篇Java“优雅”地中断线程-原理篇真正理解JavaVolatile的妙用JavaThreadLocal你之前了解的可能有误JavaUnsafe/CAS/LockSupport应用与原理
Java
小鱼人爱编程
·
2021-11-21 14:08
Java Synchronized 重量级锁原理深入剖析上(互斥篇)
地中断线程-实践篇Java“优雅”地中断线程-原理篇真正理解JavaVolatile的妙用JavaThreadLocal你之前了解的可能有误JavaUnsafe/CAS/LockSupport应用与原理
Java
小鱼人爱编程
·
2021-11-21 14:52
JAVA并发
——公平锁,非公平锁,悲观锁,乐观锁,死锁
个人博客:haichenyi.com。感谢关注前言 这几个锁都可以从前面一篇线程同步器AQS里面找到影子,我先把前面一篇的加锁流程图拿过来用一用。加锁流程图.png 上面这个流程图是上一篇最开始讲的时候的一张流程图,后面写的时候,后面的流程图都没有画。这一片我们来画一下后面的流程图。公平锁,非公平锁 前面一篇讲的时候,我说过了,我们当时做的是一个公平锁。这个公平锁和非公平锁的主要区别就是在这
海晨忆
·
2021-11-20 14:41
Java并发
编程——线程池详解
背景在执行一个异步任务或并发任务时,往往是通过直接newThread()方法来创建新的线程,这样做弊端较多。经常创建和销毁线程,对性能的影响很大(上下文切换)更好的解决方案是合理地利用线程池,线程池的优势很明显,如下:降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;提高系统响应速度,当有任务到达时,无需等待新线程的创建便能立即执行;方便线程并发数的管控,线程若是无限制的创建,
憨憨龟.
·
2021-11-14 22:25
并发编程
java
后端
并发编程
Java并发
编程——ConcurrentHashMap详解
引出场景:针对用户来做一个访问次数的记录。通过HashMap进行记录,key为用户名,value为访问次数。publicclassConcurrentHashMapDemo{privatestaticfinalHashMapUSER_ACCESS_COUNT=newHashMapUSER_ACCESS_COUNT=newConcurrentHashMap1);System.out.println(
憨憨龟.
·
2021-11-14 15:44
并发编程
java
后端
并发编程
java并发
请求下数据插入重复问题的解决方法
目录前言分布式锁工具类在过滤器实现请求拦截总结前言前段时间发现数据库里经常会存在两条相同的用户数据,导致数据查询异常。查了原因,发现前端微信小程序在授权登录时,有时会出现同时发送了两条一模一样的请求(也就是常说的并发)。虽然后端代码有做防重复的判断,但是避免不了并发时候的重复性操作。于是就开始考虑并发的解决方案,解决方案有很多,从拦截请求到数据库层面都可以入手。我们采用了对请求报文生成摘要信息+R
·
2021-11-12 16:32
Java并发
之搞懂读写锁
目录ReentrantReadWriteLock小结StampedLock小结总结ReentrantReadWriteLock我们来探讨一下java.concurrent.util包下的另一个锁,叫做ReentrantReadWriteLock,也叫读写锁。实际项目中常常有这样一种场景:比如有一个共享资源叫做SomeData,多个线程去操作SomeData,这个操作有读操作也有写操作,并且是读多写
·
2021-11-10 11:44
【JDK源码】并发原子类AtomicStampedReference
文章目录简介ABA内部类构造方法compareAndSet()方法案例总结简介AtomicStampedReference是
java并发
包下提供的一个原子类,它能解决其它原子类无法解决的ABA问题,比如
早上真起不来!
·
2021-11-10 11:20
JDK
JUC
java
开发语言
后端
【JDK源码】并发原子类AtomicInteger
文章目录简介原子操作主要属性compareAndSet()方法getAndIncrement()方法总结扩展简介AtomicInteger是
java并发
包下面提供的原子类,主要操作的是int类型的整型,
早上真起不来!
·
2021-11-09 11:57
JDK
JUC
java
源码
Executors 源码解析(JDK8)
前言本文隶属于专栏《100个问题搞定
Java并发
》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
Shockang
·
2021-11-08 22:27
Java并发
java
并发
线程池
如何对请求进行限流?
前言本文加粗样式隶属于专栏《100个问题搞定
Java并发
》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
Shockang
·
2021-11-08 21:58
Java并发
java
并发
并发编程终章:
Java并发
编程系列总纲
并发编程目录磕磕绊绊近半年时间,在工作之余,前后一共写了十三篇深入
Java并发
编程系列的文章,由于内容颇多,所以在这里列一个目录方便诸位翻阅。
竹子爱熊猫
·
2021-11-07 00:00
多线程
高并发编程
后端
ThreadLocal使用以及面试题解析
简述:在
Java并发
中,如果对于某些对象并不需要做共享操作,而是希望每个线程把对应的对象复制一份到线程内,加上线程天然的隔离性,这样可以完美的避免多个线程抢夺操作同一个对象从而报错。
小驴小驴
·
2021-11-06 18:07
java并发
编程之原子性、可见性、有序性
目录1原子性1.1java中的原子性操作2可见性2.1可见性问题2.2解决可见性问题3有序性3.1单个线程内程序的指令重排序3.2多线程内程序的指令重排序3.3保证有序性的解决方法3.4volatile保证有序性的原理4实例分析4.1原理分析4.2synchronized结合4.3Lock结合4.4使用AtomicInteger替换int在java中,执行下面这个语句inti=12;执行线程必须先
·
2021-11-05 17:48
阿里绝密文档:亿级并发系统设计 +并发编程图册(全彩版)
今天给大家分享的就号称由阿里大佬总结出来的两份关于
Java并发
+亿级流量架构的全彩版手册,下面会给大家展示一下其中的部分内容!百亿级并发系统设计因为篇幅原因所以就不给大家展示过多的内容了,需要获取的
横扫bug
·
2021-11-04 11:46
java
开发语言
后端
Java并发
编程之内存模型
目录一、Java内存模型的基础1.1并发编程模型的两个关键问题1.2Java内存模型的抽象结构1.3从源代码到指令重排序1.4写缓冲区和内存屏障1.4.1写缓冲区1.4.2内存屏障1.5happens-before简介简介:Java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰Java程序员,这一系列几篇文章将揭开Java内存模型的神秘面纱。这一系列的文章大致分4个部分,分别是:Java
·
2021-11-04 10:56
上一页
42
43
44
45
46
47
48
49
下一页
按字母分类:
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
其他