<
一枝梅的博客
博客
随笔
软件
专题
标签
留言板
开往
专题:Java多线程编程
共20篇
线程和线程的六种状态
一、线程简介 线程是操作系统能够进行运算调度的最小单位,同时也被称为轻量级进程(lightweight processes)。线程存在于进程中,是进程的实际运作单位。一个进程中可以并发多个线程,每条线程并行执行不同的任务。 线程的作用主要包括: ...
#java
#多线程编程
一枝梅
6月前
247
线程同步机制一:内部锁和显式锁
Java多线程中的同步机制,即当多个线程同时竞争访问共享资源时,如何保证线程安全,在此基础上还要兼顾并发访问的性能问题,这是一个非常棘手且重要的问题。 一、线程安全 1. 举例 举个很简单的生活中的例子,我们去淘宝购物,店里还有最后一件商品,这时...
#多线程编程
#java
一枝梅
6月前
398
线程同步机制二:CAS原理和JUC原子类
一、CAS原理 CAS(Compare And Swap),也就是“比较并交换”,它是一种CPU指令级的原子操作。CAS 操作常用于解决并发环境下的竞态条件和实现线程安全的数据操作。它的基本操作流程如下: 比较阶段:CAS 首先会比较内存位置...
#java
#多线程编程
一枝梅
5月前
297
CAS原子类:AtomicInteger源码解析
一、AtomicInteger的使用 先回顾下AtomicInteger常用方法: 方法名 方法描述 public final int get() 获取当前对象的值 public final int getAndSet(int ...
#java
#多线程编程
一枝梅
5月前
279
CAS原子类:AtomicLongArray源码解析
AtomicLongArray内部维护了一个int类型的数组,需要先复习下数组对象的在内存中的结构,这对接下来对数组类型原子类的理解至关重要。 一、数组对象的内存结构 我们运行以下代码并将数组对象的内存结构通过JOL工具打印出来,关于这部分知识,...
#java
#多线程编程
一枝梅
5月前
202
伪共享(False Sharing)
伪共享的定义:伪共享(False Sharing) 是指多个处理器核心或线程在并发执行时,由于共享相同缓存行而导致不必要的性能下降的现象。当多个处理器核心或线程同时访问共享的内存区域,即使它们在不同的变量上操作,但这些变量处于同一个缓存行中,会导...
#多线程编程
#java
一枝梅
5月前
260
CAS原子类:LongAdder源码解析
LongAdder类直译过来名字叫做“原子加法器”,它是JDK1.8才出现的新类,它的作用是替代AtomicLong类在某些并发场景下的使用,使得程序运行效率更高。 在之前的《线程同步机制二:CAS原理和JUC原子类》文章中,已经简单介绍过该类的...
#java
#多线程编程
一枝梅
4月前
232
详解CAS操作的ABA问题
一、ABA问题 CAS原子操作虽然好,但是出生就自带ABA问题,那么什么是ABA问题?CAS的全称叫做Compare and swap,也就是比较和交换,ABA问题就出现在"Compare"比较阶段。 举个例子,X变量的值是10,现在线程A要对X...
#java
#多线程编程
一枝梅
4月前
255
深入理解偏向锁、轻量级锁、重量级锁
一、对象结构和锁状态 synchronized关键字是java中的内置锁实现,内置锁实际上就是个任意对象,其内存结构如下图所示 其中,Mark Word字段在64位虚拟机下占64bit长度,其结构如下所示 可以看到Mark Word字段有个很...
#java
#多线程编程
一枝梅
4月前
200
hashCode方法的调用对Java锁的影响
从上一篇文章《深入理解偏向锁、轻量级锁、重量级锁》中已经介绍了关于锁升级相关的知识,在其中研究偏向锁的过程中,无意中调用了hashCode方法,然后锁的状态发生了明显不符合预期的变化。 一、偏向锁回顾 首先看下偏向锁的案例,这个之前已经介绍过了,...
#java
#多线程编程
一枝梅
4月前
211
java线程间通信:等待通知机制
在多线程编程中,不同线程可能需要相互协作、共享数据,线程间通过某种方式互相告知自己的状态,以避免无效的资源争夺,这就是线程间通信。线程间通信的目的是确保多个线程能够有效地协调工作,以完成特定任务或避免数据不一致性。 线程间通信的方式可以有很多种:...
#java
#多线程编程
一枝梅
4月前
233
详解AQS一:CLH队列锁
AQS(AbstractQueuedSynchronizer)抽象队列同步器是Java中用于构建同步器(synchronizer)的框架,提供了一种基于FIFO等待队列的抽象框架,JAVA中的很多显式锁底层实现都使用了该框架:ReentrantL...
#java
#多线程编程
一枝梅
3月前
218
详解AQS二:ReentrantLock公平锁原理
ReentrantLock作为我们使用频率最高的显式锁,它是AQS的经典实现,本篇文章将以ReentrantLock公平锁为例讲解AQS的实现。 一、ReentrantLock 在之前的文章《线程同步机制一:内部锁和显式锁》中已经提到过关于显式锁...
#java
#多线程编程
一枝梅
2月前
288
详解AQS三:ReentrantLock非公平锁原理
上一篇文章《详解AQS二:ReentrantLock公平锁原理》中,详细分析了ReentrantLock公平锁的AQS实现原理,本篇文章将会继续分析ReentrantLock非公平锁的实现原理。 首先看看非公平锁NonfairSync的源码,以方...
#java
#多线程编程
一枝梅
2月前
141
详解AQS四:ReentrantLock条件队列原理
ReentrantLock的条件队列是实现“等待通知”机制的关键,之前在《java线程间通信:等待通知机制》一文中讲过了使用ReentrantLock实现多生产者、多消费者的案例,这个案例实际上在java源码的注释中已经给了,可以看Conditi...
#java
#多线程编程
一枝梅
2月前
162
详解AQS五:深入理解共享锁CountDownLatch
CountDownLatch是一个常用的共享锁,其功能相当于一个多线程环境下的倒数门闩。CountDownLatch可以指定一个计数值,在并发环境下由线程进行减一操作,当计数值变为0之后,被await方法阻塞的线程将会唤醒。通过CountDown...
#java
#多线程编程
一枝梅
2月前
122
详解AQS六:深入理解循环栅栏CyclicBarrier
从字面意思直译过来,CyclicBarrier的意思是“循环屏障”,在国内普遍叫它“循环栅栏”,它和CountDownLatch一样,都是JUC下的线程同步工具。 在上一篇文章《详解AQS五:深入理解共享锁CountDownLatch》讲了Cou...
#java
#多线程编程
一枝梅
2月前
200
详解AQS七:深入理解信号量机制Semaphore
所谓的共享锁就是在同一时刻允许多个线程持有的锁,和CountDownLatch不同,Semaphore是一种真正的共享锁:Semaphore可以用来控制在同一时刻访问共享资源的线程数量,通过协调各个线程以保证共享资源的合理使用。Semaphore...
#java
#多线程编程
一枝梅
1月前
77
Java线程池技术一:入门篇
Java线程的创建非常昂贵,需要JVM和OS(操作系统)配合完成大量的工作: (1)必须为线程堆栈分配和初始化大量内存块,其中包含至少1MB的栈内存。 (2)需要进行系统调用,以便在OS(操作系统)中创建和注册本地线程。 Java高并发应用频繁创...
#java
#多线程编程
一枝梅
1月前
101
java线程池技术二:ThreadPoolExecutor实现原理
本篇文章将讲解ThreadPoolExecutor线程池,它是Executors类newFixedThreadPool方法以及newCachedThreadPool方法直接创建的线程池。 一、线程池的标准创建方式 大部分企业的开发规范都会禁止使...
#java
#多线程编程
一枝梅
1月前
90
阅读榜单
398人浏览
线程同步机制一:内部锁和显式锁
TOP1
线程同步机制二:CAS原理和JUC原子类
5月前
297人浏览
TOP2
详解AQS二:ReentrantLock公平锁原理
2月前
288人浏览
TOP3
CAS原子类:AtomicInteger源码解析
5月前
279人浏览
TOP4
伪共享(False Sharing)
5月前
260人浏览
TOP5
详解CAS操作的ABA问题
4月前
255人浏览
TOP6
最新发布
狂盗一枝梅
2025-01-26
90次阅读
留言
java线程池技术二:ThreadPoolExecutor实现原理
本篇文章将讲解ThreadPoolExecutor线程池,它是Executors类newFixedThreadPool方法以及newCachedThreadPool方法直接创建的线程池。 一、线程池的标准创建方式 大部分企业的开发规范都会禁止使...
博客
评分
回复
狂盗一枝梅
2025-01-22
101次阅读
留言
Java线程池技术一:入门篇
Java线程的创建非常昂贵,需要JVM和OS(操作系统)配合完成大量的工作: (1)必须为线程堆栈分配和初始化大量内存块,其中包含至少1MB的栈内存。 (2)需要进行系统调用,以便在OS(操作系统)中创建和注册本地线程。 Java高并发应用频繁创...
博客
评分
回复
狂盗一枝梅
2025-01-19
77次阅读
留言
详解AQS七:深入理解信号量机制Semaphore
所谓的共享锁就是在同一时刻允许多个线程持有的锁,和CountDownLatch不同,Semaphore是一种真正的共享锁:Semaphore可以用来控制在同一时刻访问共享资源的线程数量,通过协调各个线程以保证共享资源的合理使用。Semaphore...
博客
评分
回复