![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
文章平均质量分 76
A552112067
这个作者很懒,什么都没留下…
展开
-
多线程笔记一
多线程的学习笔记进程和线程进程线程线程的生命周期Java中对线程安全的处理synchronized定义锁升级锁标记volatile定义JMM内存模型指令重排序内存屏障lock锁定义实现原理线程的通讯方法原理juc中的队列SynchronousQueue 无限队列LinkedTransferQueue 无界阻塞队列.LinkedBlockingQueue 一个正常的基于链表结构的阻塞队列, 无界队列LinkedBlockingDeque 双向链表组成的队列.J.U.C 并发工具CountDownLatchSe原创 2021-11-27 14:39:38 · 299 阅读 · 0 评论 -
五丶多线程之JUC(Lock)
一丶JUC是什么java.util.concurrent是我们java中常用的并发包,简称juc。二丶LOCK接口1.和synchronized对比:之前使用的锁都是synchronized关键字锁,来进行,但是这样锁不够灵活,而且不能自己控制,但是如使用lock锁,我们就可以进行自己来控制何时使用何时取消。2.关于lock锁的具体实现:1. ReentrantLock :重入锁表示已获取锁的线程重新进入的时候不会阻塞,但是会增加一次锁的次数。2. ReentrantReadWriteLoc原创 2020-05-27 10:45:07 · 288 阅读 · 0 评论 -
四丶多线程的基础补漏
四丶多线程的基础补漏一丶死锁产生的原因1.互斥:同一时间的只有一个线程可以占有资源2.占有且等待:线程T1占有用资源X,且等待着资源Y,但是不释放资源X3.不可抢占:线程T1占有资源X的时候,其他线程不能抢占当前资源4.循环等待:线程T1等待线程T2占用的资源,线程T2等待着线程T1占用的资源。二丶ThreadJoin()1.TreadJoin(),可以让线程结果对其他线程可见,并不是串行的执行。三丶ThreadLocal1.ThreadLocal其实是对共享变量进行了隔离,从而保证线程的原创 2020-05-25 10:13:10 · 144 阅读 · 0 评论 -
三丶多线程的进阶二(volatile)
三丶多线程的进阶二(volatile)1.volatile关键字的使用volatile关键字,用在我们的变量前可以保证我们的变量的可见性(一个线程操作这个变量的时候,可以对其他的线程可见)。2.volatile的原理通过添加这个关键字的,可以是我们的数据在底层执行的指令的时候加了一个lock标志。3.LOCK命令在底层的执行逻辑1.首先需要了解一下我们的线程是如何内存交互的这里可以看到,每个线程都会又有一个自己的高速缓存区,他们还会共享一个缓存区域,最后才会去修改主存。2.lock锁其实就原创 2020-05-22 10:42:35 · 165 阅读 · 0 评论 -
二丶多线程的进阶一(锁)
1.线程的安全的性问题?多个线程访问同一个数据的时候,就会操作线程的安全的问题,因为线程内部操作其实是先取值,然后修改,最后再更新内存中的数据。这样由于多个线程的切换就会导致线程安全的问题,比如我们的i++就不是线程安全。1.线程的安全的原因:由于原子性被破坏。2.如何避免线程安全的性的问题1.synchronized核心思想,对我们的资源进行加锁,当前只能有一个线程得到资源,从而保证数据原子性和安全性。①使用方式1:修饰类对象@Override public void run() {原创 2020-05-19 14:48:36 · 147 阅读 · 0 评论 -
SpringBoot学习笔记1————多线程的使用线程池
SpringBoot学习笔记1————多线程的使用线程池1. 配置线程池的配置1.可以使用配置文件的方式,我这里使用的是在类里面直接配置import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springf...原创 2018-12-21 15:40:42 · 247 阅读 · 0 评论