JAVA并发编程
文章平均质量分 93
瑜伽娃娃
这个作者很懒,什么都没留下…
展开
-
Fork/Join框架介绍
ForkJoinPool类包括一些重要的方法,例如submit()、invoke()、shutdown()、awaitTermination()等,用于提交任务、执行任务、关闭线程池和等待任务的执行结果。Fork/Join是一个是一个并行计算的框架,主要就是用来支持分治任务模型的,这个计算框架里的 Fork对应的是分治任务模型里的任务分解,Join 对应的是结果合并。这些任务通常可以将大的任务分解成若干个子任务,每个子任务可以独立执行,并且可以通过归并操作将子任务的结果合并成一个有序的结果。原创 2023-10-16 23:08:09 · 97 阅读 · 0 评论 -
JAVA并发可见性、有序性、原子性与JMM内存模型详解
本地内存是JMM的一 个抽象概念,并不真实存在,它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。根据JMM的规定,原创 2023-10-13 23:42:56 · 67 阅读 · 0 评论 -
深入理解线程池ThreadPoolExecutor
1. 为什么需要线程池2.线程池的核心线程数、最大线程数该如何设置3. 线程池的具体实现3.1 线程池执行任务的具体流程3. 2 线程池的五种状态的流转3.3 线程池中的线程的关闭3.4 线程池为什么一定得是阻塞队列3.5 线程发生异常,会被移出线程池吗?4. Tomcat是如何自定义线程池的?原创 2023-10-11 23:05:59 · 91 阅读 · 0 评论 -
认识阻塞队列
队列是一种线性的数据结构,它的特点有。原创 2023-10-09 23:14:51 · 27 阅读 · 0 评论 -
深入理解AQS和ReentrantLock
AQS是一个抽象同步框架,可以用来实现一个依赖状态的同步器。java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队 列、独占获取、共享获取等,而这些行为的抽象就是基于AbstractQueuedSynchronizer(简称 AQS)实现的。JDK中提供的大多数的同步器如Lock, Latch, Barrier等,都是基于AQS框架来实现的。一般是通过一个内部类Sync继承 AQS将同步器所有调用都映射到Sync对应的方法。原创 2023-10-08 22:43:31 · 36 阅读 · 0 评论 -
常用并发工具类的使用及应用场景详解
ReentrantLock 是java.util.concurrent.locks下的一个类,加锁操作一定要放在 try 代码之前,这样可以避免未加锁成功又释放锁的异常;相对于 synchronized,ReentrantLock具备如下。加锁次数和释放锁次数一定要保持一致,否则会导致线程阻塞或程序异常;默认情况下 ReentrantLock 为非公平锁而非公平锁;当前线程在超时时间内获取了锁。当前线程在超时时间内被中断。释放锁一定要放在 finally 中,否则会导致线程阻塞。原创 2023-10-07 17:43:18 · 128 阅读 · 1 评论 -
并发安全问题探究
我们所写的代码在并发情况下使用 时,总是能表现出正确的行为;反之,未实现线程安全的代码,表现的行为是不 可预知的,有可能正确,而绝大多数的情况下是错误的。1.2 如何是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信 而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。可以总结为:1、死锁是必然发生在多操作者(M>=2 个)争夺多个资源(N>=2 个,且 N原创 2023-10-06 20:45:58 · 39 阅读 · 1 评论 -
CAS&Atomic 原子操作详解
1 原子操作1.1 什么是原子操作1.2 如何实现原子操作2 CAS2.1 什么是CAS2.2CAS实现原子操作的三大问题2.2.1 ABA问题2.2.2 循环时间开销大2.2.3CAS&Atomic 原子操作详解只能保证一个共享变量的原子操作。3.Jdk 中相关原子操作的类及使用原创 2023-10-05 22:51:56 · 57 阅读 · 0 评论 -
Thread的本地变量副本之ThreadLocal详解
Thread的本地变量副本之ThreadLocal详解,导致内存泄漏分析原创 2023-10-04 23:25:19 · 99 阅读 · 1 评论 -
深入理解java并发、线程与等待通知机制
同一台计算机的进程通信称为 IPC(Inter-process communication),不同计算机之间的进程通信被称为R(mote)PC,需要通过网络,并遵守共同的协议,比如大家熟悉的Dubbo就是一个RPC框架,而Http协议也经常用在RPC上,比如SpringCloud微服务。程序计数器是一种专门的寄存器,它指示CPU在其指令序列中的位置,并保存着正在执行的指令的地址或下一条要执行的指令的地址,这取决于具体的系统。从数据来说,以程序员的角度来看, 是方法调用过程中的各种局部的变量与资源;原创 2023-09-29 23:37:26 · 268 阅读 · 0 评论