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

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

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 ......

JUC7_CountDownLatch_CyclicBarrier_Semaphore使用CyclicBarrier

CyclicBarrier 概念 和CountDownLatch相反,需要集齐七颗龙珠,召唤神龙。也就是做加法,开始是0,加到某个值的时候就执行 CyclicBarrier的字面意思就是可循环(cyclic)使用的屏障(Barrier)。它要求做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被 ......

JUC7_CountDownLatch_CyclicBarrier_Semaphore使用Semaphore

Semaphore:信号量 概念 信号量主要用于两个目的 一个是用于共享资源的互斥使用 另一个用于并发线程数的控制 代码 我们模拟一个抢车位的场景,假设一共有6个车,3个停车位 那么我们首先需要定义信号量为3,也就是3个停车位 /** * 初始化一个信号量为3,默认是false 非公平锁, 模拟3个 ......

JUC11_死锁编码及快速定位

死锁编码及定位分析 概念 死锁是指两个或多个以上的进程在执行过程中,因争夺资源而造成一种互相等待的现象,若无外力干涉那他们都将无法推进下去。如果资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。 产生死锁的原因 系统资源不足 进程运行推进的顺序不对 ......
编码 JUC 11

JUC7_CountDownLatch_CyclicBarrier_Semaphore使用CountDownLatch

CountDownLatch 概念 让一些线程阻塞直到另一些线程完成一系列操作才被唤醒 CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程就会被阻塞。其它线程调用CountDown方法会将计数器减1(调用CountDown方法的线程不会被阻塞),当计数器的值变 ......

JUC5_TransferValue是什么

值传递和引用传递 举例 /** * 值传递和引用传递 * @author: 陌溪 * @create: 2020-03-14-18:25 */ class Person { private Integer id; private String personName; public Person(St ......
JUC5_TransferValue TransferValue JUC5 JUC

JUC6_Java的锁Java锁之读写锁

独占锁(写锁) / 共享锁(读锁) / 互斥锁 概念 独占锁:指该锁一次只能被一个线程所持有。对ReentrantLock和Synchronized而言都是独占锁 共享锁:指该锁可以被多个线程锁持有 对ReentrantReadWriteLock其读锁是共享,其写锁是独占 写的时候只能一个人写,但是 ......
Java JUC6_Java JUC6 JUC