并发
wj-1024
【日积跬步】
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【锁】死锁与定位分析
1.什么是死锁? 两个或两个以上进程在执行过程中,因争夺资源而造成的一种相互等待的现象 2.产生的原因 系统资源不足 进程运行推进的顺序不合适 资源分配不得当 3.举例 Demo: /** * 死锁与定位分析 * * @author wangjie * @version V1.0 * @date 2019/12/27 */ public class DeadlockDe...原创 2019-12-27 11:20:53 · 2401 阅读 · 0 评论 -
【JUC】线程池-ThreadPoolExecutor源码解析
1.线程池能做什么? 是控制运行的线程的数量 处理过程中将任务加入队列,然后在线程创建后启动这些任务 如果先生超过了最大数量,超出的数量的线程排队等候 等其他线程执行完毕,再从队列中取出任务来执行. 简单来说,线程池可以管理线程,进行线程复用和控制最大并发数。 2.线程池优点? 第一:降低资源消耗.通过重复利用自己创建的线程降低线程创建和销毁造成的消耗. 第二: 提高响应速度.当任务到...原创 2019-12-26 18:27:57 · 2664 阅读 · 0 评论 -
【JUC】Callable底层源码分析
1.线程创建 我们创建线程一般有以下几种方式: 1,承Thread,重写run方法 2,实现Runnable接口,重新run方法 3,实现Callable接口并重写call方法。 我们今天聊的就是第三种。实现Callable接口并重写call方法,与 Runnable 相比Callable又有些不同: 1, Callable 可以在任务结束的时候提供一个返回值,Runnabl...原创 2019-12-25 13:51:48 · 3099 阅读 · 0 评论 -
【JUC】阻塞队列
1.什么是阻塞队列? 顾名思义,首先它是个队列: 当阻塞队列是空时,从队列中获取元素的操作将会被阻塞。 当阻塞队列是满时,往队列中添加元素的操作将会被阻塞。 同样,试图往已满的阻塞队列中添加新的线程同样也会被阻塞,直到其他线程从队列中移除一个或者多个元素或者全清空队列后使队列重新变得空闲起来并后续新增。 2.有什么用? 在多线程领域:所谓阻塞,在某些情况下会挂起线程(即线程阻塞),一旦条件...原创 2019-12-24 14:50:25 · 2428 阅读 · 0 评论 -
【锁】自旋锁-MCS/CLH队列
1.自旋锁-MCS/CLH队列 之前有写过一篇关于锁的笔记:【锁】公平锁/非公平锁/可重入锁/递归锁/自旋锁/独占锁/共享锁/读写锁 里面关于自旋锁,特别CLH队列并没有提到,故此有了这篇笔记。 2.自旋锁 指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上线文切换的消耗,缺点是循环会消耗CPU 2.1 CAS JUC包里的AtomicInteger类底层用...原创 2019-12-20 21:00:25 · 2648 阅读 · 0 评论 -
【JUC】CountDownLatch/CyclicBarrier/Semaphore
1.CountDownLatch CountDown减法计数,Latch门闩的意思 让一些线程阻塞直到另外一些完成后才被唤醒。 举例: 1,值日生要等所有人走后,才能打扫卫生关灯锁门 Demo: /** * 值日生要等所有人走后,才能打扫卫生关灯锁门 * * @author wangjie * @version V1.0 * @date 2019/12/19 */ publ...原创 2019-12-19 17:18:11 · 2483 阅读 · 0 评论 -
【锁】公平锁/非公平锁/可重入锁/递归锁/自旋锁/独占锁/共享锁/读写锁
1,公平锁与非公平锁 公平锁:指多个线程按照申请锁的顺序来获取锁类似排队打饭 先来后到 非公平锁:指在多线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取到锁,在高并发的情况下,有可能造成优先级反转或者饥饿现象 1.1 公平锁与非公平锁区别 并发包ReentrantLock的创建可以指定构造函数的boolean类型来得到公平锁或者非公平锁,不填默认是非公平锁...原创 2019-12-18 15:09:46 · 2721 阅读 · 1 评论 -
Java集合类ArrayList线程不安全验证和解决
1.ArrayList 线程不安全验证 验证Demo: /** * 集合类ArrayList线程不安全验证 * * @author wangjie * @version V1.0 * @date 2019/12/17 */ public class ContainerNotSafe { public static void main(String[] args) { ...原创 2019-12-17 14:34:56 · 17161 阅读 · 0 评论
分享