![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 75
yojofly
这个作者很懒,什么都没留下…
展开
-
并发编程-JUC核心之AQS
JUC核心之AQS 1.1 重入锁ReentrantLock的初步认识 什么是锁 锁是用来解决多线程并发访问共享资源所带来的数据安全性问题的手段,对一个共享资源加锁后,如果有一个线程获得了锁,那么其他线程无法访问这个共享资源 加锁前后的区别 通过查看jdk源码目录rt.jar->java->util->concurrent->locks 可以看到lock接口的很多子类和实现,我们先使用ReentrantLock public class ReenDemoTest { .原创 2021-04-26 22:49:53 · 195 阅读 · 0 评论 -
并发编程-发布与逃逸
1.发布与逃逸 1.1 发布对象 发布的意思是是一个对象能够被当前范围之外的代码所使用 1.2 不安全发布 1.3 对象溢出 一种错误的发布,当一个对象还没有构造完成时,就使它被其他线程所见 逃逸带来的问题 2. 安全发布对象的4种方法 2.1安全发布对象 在静态初始化函数中初始化一个对象引用 将对象的引用保存到volatile类型的域或者AtomicReference对象中(利用volatile happen-before规则) 将对象的引用保存到某个正确构造对象的final类型域中(初原创 2021-04-26 22:16:54 · 230 阅读 · 0 评论 -
并发编程-线程安全性分析
如何理解线程安全 当多个线程访问某个对象时候,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的 1 线程安全问题的本质 产生原因,cpu,内存,io的读写速率不同,cpu>内存>io 计算机通过建立高速缓存区提高了效率 优化成果: 1.cpu增加了告诉缓存,均衡与内存的速度差异 2.操作系统增加进程,线程,以及分时复用cpu,均衡cpu与i/o设备的差异 3.编译程序优化指令的执行顺原创 2021-04-01 22:30:41 · 205 阅读 · 0 评论 -
并发编程-线程的基本操作和原理
触发线程声明周期发生变化的操作 1.Thread.join的使用及原理 Thread.join的作用是保证线程执行结果的可见性 实例: public class ThreadJoinTest { public static int i = 0; public static int x = 0; public static void main(String[] args) throws InterruptedException { Thread t1 = new Thr原创 2021-03-23 22:56:01 · 104 阅读 · 0 评论 -
并发编程-线程的基本介绍
线程的基本认识 1.线程的基本介绍 线程是操作系统能够进行运算调度的最小单位。它包含在进程之后,是进程中实际的运作单位 为什么会有线程 在多核cpu中利用多线程可以实现真正意义上的并行执行 在一个应用进程中,会存在多个同时执行的任务,如果其中一个任务呗阻塞,将会引起不依赖该任务的任务也被阻塞,通过对不同任务创建不同的线程去处理,可以提升程序处理的实时性 线程可以认为是轻量级的进程,所以线程的创建,销毁比进程快 为什么要用多线程 异步执行 利用多cpu资源实现真正意义上的并行执行 线程应用场景 使用原创 2021-03-23 21:43:49 · 111 阅读 · 0 评论