locksupport juc

JUC笔记

JUC并发编程 狂神说:https://space.bilibili.com/95256449 1. 什么是JUC JUC就是java.util.concurrent下面的类包,专门用于多线程的开发。 源码 + 官方文档 面试高频问! java.util 工具包 业务:无法通过普通的线程代码 Thr ......
笔记 JUC

JUC 常用类 ReentrantLock

- ReentrantLock 类内部总共存在 Sync、NonfairSync、FairSync 三个类 - NonfairSync与FairSync类继承自 Sync 类 - Sync类继承自 AbstractQueuedSynchronizer 抽象类 ### 内部类 #### Sync `` ......
ReentrantLock 常用 JUC

JUC包常用类原理

## 概要 放眼望去,`java.util.concurrent`包下类大致包括:atomic 原子类、锁、并发集合、线程池、工具类。我们挑重要的了解一下。 ![](https://img2023.cnblogs.com/blog/2728681/202307/2728681-20230711181 ......
原理 常用 JUC

JUC

ReentrantReadWriteLock 读写锁 概念 一个资源可以被多个读线程访问,或者可以被一个写线程访问,但是不能同时存在读写线程,读写互斥,读读共享提升性能,同时多人进行读操作 缺点:造成锁饥饿,一直读,没有写操作 读是共享锁,写独占锁 锁降级:写锁降级到读锁,读锁不能升级到写锁 阻塞队 ......
JUC

JUC-ForkJoin

#1, ForkJoin 简介 ForkJoin是由JDK1.7之后提供的多线程并发处理框架。ForkJoin框架的基本思想是分而治之。什么是分而治之?分而治之就是将一个复杂的计算,按照设定的阈值分解成多个计算,然后将各个计算结果进行汇总。相应的,ForkJoin将复杂的计算当做一个任务,而分解的多 ......
JUC-ForkJoin ForkJoin JUC

JUC学习笔记

## 目录 * [1. JUC概述及回顾](#1-juc概述及回顾) * [1.1. JUC是什么?](#11-juc是什么) * [1.2. 进程和线程](#12-进程和线程) * [1.3. 并行和并发](#13-并行和并发) * [1.4. wait/sleep的区别](#14-waitsle ......
笔记 JUC

JUC用法-随笔01

​一、概述 1.1、概念介绍 编写线程安全代码的核心:管理(共享、可变)状态的访问操作。 线程安全性:多线程访问某个类时,该类始终表现出正确的行为,则这个类是线程安全类。 无状态对象一定是线程安全的。 竞态条件:由不正确的执行顺序引发的不正确的结果。 常见的竞态条件:先检查、后执行。(根据一个可能失 ......
随笔 JUC

3、LockSupport与线程中断

# LockSupport与线程中断 ## 线程中断 ​ 首先 ​ 一个线程不应该由其他线程来强制中断或停止,而是***应该由线程自己自行停止***,自己来决定自己的命运。所以,Thread.stop,Thread.suspend, Thread.resume 都已经被废弃了。 ​ 其次 ​ 在Ja ......
线程 LockSupport

JUC同步锁原理源码解析六----Exchanger

# JUC同步锁原理源码解析六 Exchanger ## Exchanger ### Exchanger的来源 ```java A synchronization point at which threads can pair and swap elements within pairs. Each ......
Exchanger 源码 原理 JUC

JUC同步锁原理源码解析五----Phaser

# JUC同步锁原理源码解析五 Phaser ## Phaser ### Phaser的来源 ```java A reusable synchronization barrier, similar in functionality to {@link java.util.concurrent.Cyc ......
源码 原理 Phaser JUC

JUC同步锁原理源码解析四----Semaphore

# JUC同步锁原理源码解析四 Semaphore ## Semaphore ### 1.Semaphore的来源 ```java A counting semaphore. Conceptually, a semaphore maintains a set of permits. Each {@l ......
Semaphore 源码 原理 JUC

JUC同步锁原理源码解析三----CountDownLatch、CyclicBarrier

# JUC同步锁原理源码解析三 CountDownLatch、CyclicBarrier ## CountDownLatch、CyclicBarrier的来源 ### 1.CountDownLatch的来源 ```java A synchronization aid that allows one ......

JUC同步锁原理源码解析三----CountDownLatch、CyclicBarrier

# JUC同步锁原理源码解析三 CountDownLatch、CyclicBarrier ## CountDownLatch、CyclicBarrier的来源 ### 1.CountDownLatch的来源 ```java A synchronization aid that allows one ......

JUC同步锁原理源码解析二--ReentrantReadWriteLock

# JUC同步锁原理源码解析二 ReentrantReadWriteLock ## 1.读写锁的来源 ​ 在开发场景下,对于写操作我们为了保证原子性所以需要上锁,但是对于读操作,由于其不改变数据,只是单纯对数据进行读取,但是每次都上一把互斥锁,阻塞所有请求。这个明显不符合读多写少的场景。所以将锁分为 ......
ReentrantReadWriteLock 源码 原理 JUC

JUC同步锁原理源码解析一 之ReentrantLock

# JUC同步锁原理 ## 1.锁的本质 ### 1.什么是锁? ​ 通俗来讲,锁要保证的就是原子性,就是一个代码块不允许多线程同时执行,就是锁。从生活的角度上来说,就比如你要去上厕所,当你在上厕所期间,你会把门锁上,其他人只能排队。不允许多个人同时上厕所。 ### 2.锁的底层实现 ​ java语 ......
ReentrantLock 源码 原理 JUC

Java并发编程 JUC 线程的创建

进程和线程的区别 进程:进程是cpu资源分配的最小单位,有自己独立的内存空间 线程:线程是cpu调度的最小单位,共享进程的内存空间,一个进程在运行的过程中可以产生多个进程,线程在切换时消耗的资源远小于进程的切换 在Java中,创建一个线程的方法有很多种,可以通过复写父类的run()方法进行创建,也可 ......
线程 Java JUC

JUC知识点框架

JUC(java.util.concurrent) * atomic * AtomicBoolean * AtomicInteger * AtomicLong * AtomicReference * locks * AQS(AbstractQueuedSynchronizer) * Reentran ......
知识点 框架 知识 JUC

JUC

####线程的状态(Thread.State) - NEW:新生 - RUNNABLE:运行 - BLOCKED:阻塞 - WAITING:等待 - TIMED_WAITING:限时等待 - TERMINATED:终止 ####wait/sleep区别 - 来自不同的类:wait:Object,sl ......
JUC

LockSupport与线程中断

1 LockSupport是什么 LockSupport是用来创建锁和其他同步类的基本阻塞原语。 park方法可以阻塞线程,unpark方法可以唤醒线程。与object的wait和notify不同的是,不需要synchonized的限制,没有先后顺序的限制。 2 线程中断 线程不应该被其他线程中断, ......
线程 LockSupport

JUC:AQS

AQS 是 JUC 的基石,提供了数据结构和底层实现方法,比如获取锁的方式由子类实现完成出入队、唤醒线程由功能。这里只分析 AQS 已经实现了的功能逻辑,如果要分析完成的功能需要配合具体的子类比如 ReentrantLock ### 核心思想 如果共享资源空闲,当前线程就工作,并锁住资源。如果共享资 ......
JUC AQS

JUC:LockSuport

> 是 JUC 的核心之一,AQS 的 await()、signal() 等方法底层就是 LockSuport 实现的 > 实现线程挂起和唤醒的操作,和每个线程关联一个许可(permit),核心方式就是 park 和 unpark,底层是 Unsafe 类的 native 方法实现;类似 objec ......
LockSuport JUC

JUC:cas 算法、原子类、原子引用类

### 什么是 CAS + 全称是 Compare-And-Swap,对数据进行 **原子性** 操作,sun.misc.Unsafe 类的各个 native 方法实现的 + 比较当前工作内存中的值和主内存中的值,如果相同则执行规定操作,否则什么都不做或者重来一次,重来就是自旋锁了 [java各种锁 ......
原子 算法 JUC cas

【面试系列5】JUC

## 并行与并发 并行:多个机器同时执行 并发:一个机器分时执行 ## Future接口 定义了操作异步任务执行的一些方法,获取异步任务执行的结果,取消任务的执行,判断任务是否被取消,判断任务执行完毕。 多线程/有返回/异步任务 ![](https://img2023.cnblogs.com/blo ......
JUC

【JUC】简介

概述: JUC全称:java.util.concurrent,是JDK提供的一个处理并发的工具包。 在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步IO 和轻量级任务框架。提供可调的、灵活的线程池。还提供了设计用于多线程上下文中的Collection ......
简介 JUC

【JUC】原子操作

juc包下的原子类 针对基础类型地原子性读写而设计的原子类: AtomicBoolean AtomicInteger AtomicIntegerArray AtomicIntegerFieldUpdater<T> AtomicLong AtomicLongArray AtomicLongFieldU ......
原子 JUC

JUC并发编程原理精讲(源码分析)

并发编程是指在程序中使用多线程技术来实现并行处理的能力。多线程机制使得程序可以分解成互不干扰的任务,从而提高了程序执行的效率。并发编程可以通过对线程的创建,管理和协作进行控制,以实现更加高效的并发执行。并发编程的优点包括:① 提高程序执行效率:通过多线程并行处理,程序的处理速度可以显著提高。② 增强... ......
源码 原理 JUC

JUC8_阻塞队列

阻塞队列 概念 队列 队列就可以想成是一个数组,从一头进入,一头出去,排队买饭 阻塞队列 BlockingQueue 阻塞队列,排队拥堵,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示: 线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素 当阻塞队列是空时,从队列中获取元 ......
队列 JUC8 JUC

JUC14_Github学习

Github学习 使用Github优秀框架 + 源码 提升自己 常用词含义 watch:会持续收到该项目的动态 fork:复制某个仓库到自己的Github仓库中 star:可以理解为点赞 clone:将项目下载至本地 follow:关注你感兴趣的作者,会收到他们的动态 in关键字限制搜索范围 公式: ......
Github JUC 14

JUC15_乐观锁和悲观锁

乐观锁和悲观锁 乐观锁 概念 乐观锁:顾名思义,就是十分乐观,它总是认为不会出现问题,无论干什么都不去上锁~,如果出现了问题,再次更新值测试,这里使用了version字段。 也就是每次更新的时候同时维护一个version字段 乐观锁实现方式 取出记录时,获取当前的version 更新时,带上这个ve ......
JUC 15

JUC9_Synchronized和Lock的区别与好处

Synchronized和Lock的区别 前言 早期的时候我们对线程的主要操作为: synchronized wait notify 然后后面出现了替代方案 lock await singal 问题 synchronized 和 lock 有什么区别?用新的lock有什么好处?举例说明 synchr ......