
并发编程
文章平均质量分 92
逐步深入并发编程密林深处
今天你学点啥
那就从今天开始学习吧
展开
-
CPU缓存架构详解&高性能内存队列Disruptor实战
CPU缓存即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。CPU高速缓存可以分为一级缓存,二级缓存,部分高端CPU还具有三级缓存,每一级缓存中所储存的全部数据都是下一级缓存的一部分,这三种缓存的技术难度和制造成本是相对递减的,所以其容量也是相对递增的。原创 2025-01-03 14:45:23 · 819 阅读 · 0 评论 -
深入理解并发原子性、可见性、有序性与JMM内存模型
Java中的volatile关键字可以保证多线程操作共享变量的可见性以及禁止指令重排序,synchronized关键字不仅保证可见性,同时也保证了原子性(互斥性)。在更底层,JMM通过内存屏障来实现内存的可见性以及禁止重排序。原创 2025-01-03 10:17:18 · 907 阅读 · 0 评论 -
线程池ForkJoinPool实战及其工作原理分析
Fork/Join是一种基于分治思想的模型,在并发处理计算型任务时有着显著的优势。其效率的提升主要得益于两个方面:任务切分:将大的任务分割成更小粒度的小任务,让更多的线程参与执行;任务窃取:通过任务窃取,充分地利用空闲线程,并减少竞争。原创 2024-12-31 10:15:55 · 835 阅读 · 0 评论 -
线程池ThreadPoolExecutor实战及其原理分析
线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如Tomcat。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。原创 2024-12-27 11:59:32 · 967 阅读 · 0 评论 -
阻塞队列BlockingQueue实战及其原理分析
阻塞队列BlockingQueue实战及其原理分析原创 2024-12-26 16:50:47 · 1031 阅读 · 0 评论 -
并发容器(Map、List、Set)实战及其原理分析
并发容器(Map、List、Set)实战及其原理分析原创 2024-12-26 09:38:34 · 1212 阅读 · 0 评论 -
CyclicBarrier的源码分析
与CountDownLatch、Semaphore直接基于AQS实现不同,CyclicBarrier 是基于 ReentrantLock + ConditionObject 实现的,间接基于AQS实现的。原创 2024-12-24 10:39:21 · 596 阅读 · 0 评论 -
CountDownLatch源码分析
CountDownLatch让一个或多个线程等待其他线程执行完成后再执行。在创建CountDownLatch对象时,必须指定线程数count,每当一个线程执行完成调用countDown()方法,线程数count减1,当count减到0时,await()方法就不再阻塞。原创 2024-12-23 09:34:23 · 471 阅读 · 0 评论 -
Semaphore源码分析
Semaphore基于 AQS + CAS 实现的,可根据构造参数的布尔值,选择使用公平锁,还是非公平锁。Semaphore默认使用非公平锁。原创 2024-12-22 15:15:25 · 467 阅读 · 0 评论 -
深入理解AQS之独占锁ReentrantLock源码分析
ReentrantLock是一种基于AQS框架的应用实现,是JDK中的一种线程并发访问的同步手段,它的功能类似于synchronized是一种互斥锁,可以保证线程安全。原创 2024-12-22 13:57:16 · 972 阅读 · 0 评论 -
JUC并发同步工具在大厂中应用实战
jdk提供了比synchronized更加高级的各种同步工具,包括ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等,可以实现更加丰富的多线程操作。原创 2024-12-22 10:34:26 · 851 阅读 · 0 评论 -
并发锁机制之深入理解synchronized
synchronized 同步块是 Java 提供的一种原子性内置锁,Java 中的每个对象都可以把它当作一个同步锁来使用,这些 Java 内置的使用者看不到的锁被称为内置锁,也叫作监视器锁。原创 2024-12-20 15:10:12 · 1064 阅读 · 0 评论 -
深入理解CAS&Atomic原子操作类详解
CAS(Compare And Swap,比较与交换),是非阻塞同步的实现原理,它是CPU硬件层面的一种指令,从CPU层面能保证"比较与交换"两个操作的原子性。CAS指令操作包括三个参数:内存值(内存地址值)V、预期值E、新值N,当CAS指令执行时,当且仅当预期值E和内存值V相同时,才更新内存值为N,否则就不执行更新,无论更新与否都会返回否会返回旧的内存值V,上述的处理过程是一个原子操作。原创 2024-12-20 09:48:32 · 1541 阅读 · 0 评论 -
导致JVM内存泄露的ThreadLocal详解
Java官方文档中的描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文。原创 2024-12-19 14:32:11 · 740 阅读 · 0 评论 -
Future&CompletableFuture实战
直接继承Thread或者实现Runnable接口都可以创建线程,但是这两种方法都有一个问题就是:没有返回值,也就是不能获取执行完的结果。因此java1.5就提供了Callable接口来实现这一场景,而Future和FutureTask就可以和Callable接口配合起来使用。原创 2024-12-18 21:58:26 · 1000 阅读 · 0 评论 -
从0开始深入理解并发、线程与登台通知机制
从0开始深入理解并发、线程与登台通知机制原创 2024-12-17 16:34:25 · 746 阅读 · 0 评论