![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发编程
文章平均质量分 96
JUC学习笔记
0129y
这个作者很懒,什么都没留下…
展开
-
JUC笔记-同步器(AQS原理、ReentrantLock原理)
JUC-同步器(AQS原理、ReentrantLock原理)一、AQS原理核心思想设计原理模板对象自定义一个不可重入锁一、AQS原理核心思想AQS:AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架,许多同步类实现都依赖于该同步器AQS 用状态属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和释放锁独占模式是只有一个线程能够访问资源,如 ReentrantLock共享模式允许多个线程访问资源,如 Semaphor原创 2022-02-10 10:58:17 · 393 阅读 · 0 评论 -
JUC笔记-共享模型之工具
共享模型之工具一、线程池(重点)1.1 自定义一个简单的线程池1.2 ThreadPoolExecutor1.2.1 线程池的继承关系1.2.2 Executor 框架结构1.3 线程池状态1.4 线程池的成员属性1.5 构造方法及参数1.6 ExecutorsnewFixedThreadPoolnewCachedThreadPoolnewSingleThreadExecutor1.7 执行/提交任务 execute/submit一、线程池(重点)池化技术有很多, 比如线程池、数据库连接池、HTTP原创 2022-02-09 19:45:26 · 603 阅读 · 0 评论 -
JUC笔记-共享模型之不可变
JUC-共享模型之不可变一、不可变类设计二、final原理三、享元设计模式四、实现一个简单的连接池五、State一、不可变类设计不可变:如果一个对象不能够修改其内部状态(属性),那么就是不可变对象不可变对象线程安全的,不存在并发修改和可见性问题,是另一种避免竞争的方式String 类也是不可变的,该类和类中所有属性都是final的类用final修饰保证了该类中的方法不能被覆盖,防止子类无意间破坏不可变性无写入方法(set)确保外部不能对内部属性进行修改属性用final修饰保证了该原创 2022-02-08 00:40:53 · 633 阅读 · 0 评论 -
JUC笔记-共享模型之无锁
JUC-共享模型之无锁一、CAS原理特点二、问题提出解决思路-无锁三、CAS 与 volatile (重点)3.1 cas + 重试 的原理3.2 volatile的作用3.3 为什么CAS+重试(无锁)效率高四、Atomic4.1 常用API4.2 原理分析4.3 原子引用4.4 原子数组4.5 原子更新器4.6 原子累加器 (重要)五、Addr优化机制伪共享源码解析六、ABA(重点)6.1 AtomicStampedReference (加版本号解决ABA问题)6.2 AtomicMarkableRef原创 2022-02-07 23:12:51 · 518 阅读 · 0 评论 -
JUC笔记-共享模型之内存
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码原创 2022-02-06 22:04:57 · 145 阅读 · 0 评论 -
JUC笔记-共享模型之管程 (Monitor)
JUC-共享模型之管程( Monitor)一、线程安全问题(重点)1.1 同步1.2 线程出现问题的根本原因分析1.3 synchronized 解决方案1.3.1 同步代码块1.3.2 synchronized原理1.3.3 同步方法二、线程八锁2.1 锁住同一个对象都是this(e1对象),结果为:1,2或者2,12.2 锁住同一个对象都是this(e1对象),结果为:1s后1,2 || 2,1s后12.3 a,b 锁住同一个对象都是this(e1对象), c没有上锁。结果为:3,1s后1,2 ||原创 2022-01-24 00:11:22 · 783 阅读 · 0 评论 -
JUC笔记-线程
JUC-线程一、进程线程、并行并发、同步异步概念1.1 进程与线程1.2 并发与并行1.3 同步与异步二、线程的创建(重点)2.1 通过继承Thread创建线程2.1 使用Runnable配合Thread (推荐)2.3 使用FutureTask与Thread结合(Callable接口)三、线程运行原理(重点)3.1 虚拟机栈与栈帧3.2 线程上下文切换(Thread Context Switch)3.3 线程的常用方法3.3.1 start 与 run方法的区别3.3.2 sleep 与 yield3.3原创 2022-01-18 22:28:51 · 342 阅读 · 0 评论