搜索结果
查询Tags标签: JUC,共有 172条记录-
ThreadLocal底层源码解析
ThreadLocal底层源码解析ThreadLocal:顾名思义的意思是本地线程或者局部线程的意思,其真正含义是希望多个线程之间拥有自己的局部变量,多个线程间拥有自己的私人变量,在多线程间不被共享,被线程单独享用,这就是ThreadLocal设计之初的原衷因此,无论是操作系统级别还是编程语…
2023/12/27 1:33:11 人评论 次浏览 -
Netty源码学习9——从Timer到ScheduledThreadPoolExecutor到HashedWheelTimer
系列文章目录和关于我 一丶前言 之前在学习netty源码的时候,经常看netty hash时间轮(HashedWheelTimer)的出现,时间轮作为一种定时调度机制,在jdk中还存在Timer和ScheduledThreadPoolExecutor。那么为什么netty要重复造*昵,HashedWheelTimer又是如何实现的,解决了什…
2023/12/25 5:03:13 人评论 次浏览 -
深入理解JUC:第六章:Semaphore信号灯
理论:Semaphore 是 synchronized 的加强版,作用是控制线程的并发数量 多个线程抢多个资源,下面案例是有六台车抢三个停车位 使用Semaphore的代码: public class Demo {public static void main(String[] args) throws Exception{//模拟三个停车位Semaphore semaphore …
2022/8/26 23:24:29 人评论 次浏览 -
JUC源码学习笔记4——原子类,CAS,Volatile内存屏障,缓存伪共享与UnSafe相关方法
JUC源码学习笔记4——原子类,CAS,Volatile内存屏障,缓存伪共享与UnSafe相关方法 volatile的原理和内存屏障参考《Java并发编程的艺术》 原子类源码基于JDK8一丶volatile 与内存屏障 volatile修饰的字段,Java线程模型保证所有线程看到这个变量值是一致的。 1.volatile是…
2022/8/8 5:24:15 人评论 次浏览 -
JUC并发编程入门
一、了解线程创建线程的三种方式继承thread类重写run()方法,编写线程执行体 创建线程对象,调用start()方法启动线程实现Runable接口实现Callable接口(了解)需要返回值类型 重写call方法,需要抛出异常import java.util.concurrent.Callable; import java.util.concurr…
2022/7/26 1:22:55 人评论 次浏览 -
JUC源码学习笔记3——AQS等待队列和CyclicBarrier,BlockingQueue
一丶Condition 1.概述 任何一个java对象都拥有一组定义在Object中的监视器方法——wait(),wait(long timeout),notify(),和notifyAll()方法,这些方法配合sync hronized同步关键字,可以实现等待/通知模式。Condition接口也提供了类似于Object的监视器方法,可以和Lock接口…
2022/7/25 14:28:00 人评论 次浏览 -
JUC中的Wait和Sleep区别
结论: 1、两个方法来自不同的类wait来自Object一个来自Thread 2、重点:sleep方法不会释放锁,而wait会释放锁,使得其他线程可以同时使用同步代码块和方法等资源。 3、wait、notify、notifyAll只能在同步控制方法或者同步控制块中使用,而sleep可以在任何地方使用 4、sl…
2022/7/20 23:26:34 人评论 次浏览 -
JUC源码学习笔记1——AQS和ReentrantLock
笔记主要参考《Java并发编程的艺术》并且基于JDK1.8的源码进行的刨析,此篇只分析独占模式,后续在ReentrantReadWriteLock和 CountDownLatch中 会重点分析AQS的共享模式一丶Lock 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁可以防止多个线程同时访问共享资…
2022/7/11 1:21:02 人评论 次浏览 -
JUC
并发大纲java.util.concurrent包涵盖三块内容atomic locks 其他start线程解读初始程序public static void main(String[] args) {Thread t1 = new Thread(() ->{},"t1");t1.start();}//startpublic synchronized void start() {/*** This method is not invo…
2022/7/2 23:21:20 人评论 次浏览 -
【JUC 并发编程】——ReentrantLock 源码分析
可重入性 概念 在说 ReentrantLock 之前,先了解下什么是可重入。假如有如下代码private synchronized static void testA() {testB(); }private synchronized static void testB() {// do sth }代码很简单,有两个同步方法,testA 方法中调用 testB 方法。线程进入 testA…
2022/6/9 1:21:39 人评论 次浏览 -
【JUC 并发编程】— AQS 源码探索之独占式
上篇通过 AQS 简单地实现了一个独占锁,锁最主要的方法就是 lock() 和 unlock(),那我们就从 lock 走起public void lock() {sync.acquire(1); }获取(不响应中断) 自定义组件中独占式获取便是调用同步器的模板方法 acquire(int arg),那就看看这个方法/*** 独占式获取,…
2022/6/9 1:21:36 人评论 次浏览 -
【JUC 并发编程】— AQS 概述与实例
介绍 队列同步器 AbstractQueuedSynchronizer,简称为 AQS,是用来构建锁及其他同步组件(比如 ReentrantLock、CountDownLatch)的基础框架。它使用了一个 int 成员变量表示同步状态,通过内置的 FIFO 队列来完成获取资源线程的排队工作。AQS 的主要使用方式是继承,子类…
2022/6/9 1:21:34 人评论 次浏览 -
JUC 并发编程
JUC 1、什么是JUC JUC:Java util 工具包、包、分类 源码 + 官方文档 面试高频问!业务:普通的线程代码 Thread Runnable 没有返回值、效率相比入 Callable 相对较低! 2、进程和线程线程、进程,如果不能使用一句话说出来的技术,不扎实!进程:一个程序,QQ.exe Music.exe …
2022/6/5 1:21:44 人评论 次浏览 -
java juc
一、juc: java.util.concurrent.Java提供的API包。 主要是这三个包。二、主要有一下需要重点关注。1、并发的集合类:ConcurrentHashMap、CopyOnWriteArrayList 2、常用工具类:CountDownLatch、CyclicBarrier、Semaphore3、线程池:Executor、ThreadPoolExecutor4、原子…
2022/5/30 1:19:45 人评论 次浏览 -
JUC的数据库连接池小练习
JUC练习数据库连接池实现通过一个连接数组来充当连接池 一个原子的标记数组 通过cas来保持多线程下的安全,用synchronized来进行暂停和唤醒@Slf4j public class MyConnectionPoll {// 连接池对象数组private Connection[] connections;// 使用标记private AtomicIntegerA…
2022/5/11 2:01:08 人评论 次浏览