并发编程
文章平均质量分 76
并发编程
响彻天堂丶
那万一赢了呢?
展开
-
ThreadPoolExecutor 核心方法源码解析
1 线程池的优点(1) 资源可控性:使用线程池可以避免创建大量线程而导致内存的消耗(2) 提高响应速度:线程池地创建实际上是很消耗时间和性能的,由线程池创建好有任务就运行,提升响应速度。(3) 便于管理:池化技术最突出的一个特点就是可以帮助我们对池子里的资源进行管理。由线程池统一分配和管理。2 线程池的创建执行流程:(1) 线程池中刚开始没有线程,当一个任务提交给线程池后,线程池会创建一个新线程来执行任务。(2) 当线程数达到当线程数达到 核心线程数上限,这时再加入任务,新加的任务会被加入队列原创 2021-12-06 01:12:47 · 739 阅读 · 4 评论 -
synchronized 锁的种类及升级步骤
1 线程状态切换的代价java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统介入,需要在户态与核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内核态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值、变量等,以便内核态调用结束后切换回用户态继续工作。在Java早期版本中,synchronized属于重量级锁,效率低下,因为监视器锁(monitor)是依赖于底层的操作系统的Mutex原创 2021-12-03 00:28:59 · 469 阅读 · 0 评论 -
ThreadLocal 源码解析
1 简介ThreadLocal是解决线程安全问题一个很好的思路,它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。在很多情况下,ThreadLocal比直接使用synchronized同步机制解决线程安全问题更简单,更方便,且结果程序拥有更高的并发性。2 demoThreadLocal 作用: 人手一份。public class ThreadLocalTest { private static ThreadLocal<Integer> threadLoca原创 2021-11-30 23:08:26 · 3328 阅读 · 0 评论 -
java volatile 关键字解析
1 volatile 特点(1) 有序性(2) 可见性2 可见性JMM中规定所有的变量都存储在主内存(Main Memory)中,每条线程都有自己的工作内存(Work Memory),线程的工作内存中保存了该线程所使用的变量的从主内存中拷贝的副本。线程对于变量的读、写都必须在工作内存中进行,而不能直接读、写主内存中的变量。同时,本线程的工作内存的变量也无法被其他线程直接访问,必须通过主内存完成。(1) 当写一个volatile变量时,JMM会把该线程本地内存中的变量强制刷新到主内存中去。(2原创 2021-11-26 00:06:33 · 2497 阅读 · 0 评论 -
Java 内存模型【JMM】
1 概念Java内存模型(Java Memory Model,JMM)JMM主要是为了规定了线程和内存之间的一些关系。根据JMM的设计,系统存在一个主内存(Main Memory),Java中所有变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主存完成。作用:(1) 通过JMM来实现线程和主内存之间的抽象关系。(2) 屏原创 2021-11-25 21:29:03 · 101 阅读 · 0 评论 -
ReentrantLock源码解析(图解AQS)
1 同步队列(CLH)CLH队列是Craig, Landin, and Hagersten三人发明的一种基于双向链表数据结构的队列。是一种基于链表的可扩展、高性能、公平的自旋锁,申请线程仅仅在本地变量上自旋,它不断轮询前驱的状态,假设发现前驱释放了锁就结束自旋。JAVA中的CLH队列是原CLH队列的一个变种,线程由原来的自旋机制改为阻塞机制。2 AQS简介2.1 定义(1) 全称是 AbstractQueuedSynchronizer(2) 阻塞式锁和相关的同步器工具的框架;(3) AQS用原创 2020-11-10 01:06:29 · 4313 阅读 · 17 评论 -
ReentrantLock源码解析
1 数据结构ReentrantLock是可重入锁,又分为公平锁和非公平锁。类图如下:1.1 AQS源码解析https://blog.csdn.net/qq_34125999/article/details/1053434721.2 Sync/*** ReentrantLock 基础结构*/abstract static class Sync extends AbstractQu...原创 2020-04-07 18:50:29 · 3369 阅读 · 2 评论