随笔分类 -  并发

concurrent
摘要:一、synchronized实现 package com.duchong.queue; /** * @author DUCHONG * @since 2020-09-17 18:23 **/ public class SynchronizedDemo { //对象锁 static Object lo 阅读全文
posted @ 2020-10-09 10:34 npe0 阅读(216) 评论(0) 推荐(0) 编辑
摘要:内存屏障 原文地址 作者:Martin Thompson 译者:一粟 校对:无叶,方腾飞 本文我将和大家讨论并发编程中最基础的一项技术:内存屏障或内存栅栏,也就是让一个CPU处理单元中的内存状态对其它处理单元可见的一项技术。 CPU使用了很多优化技术来实现一个目标:CPU执行单元的速度要远超主存访问 阅读全文
posted @ 2020-09-08 18:30 npe0 阅读(513) 评论(0) 推荐(0) 编辑
摘要:序号 锁名称 应用 1 乐观锁 CAS 2 悲观锁 synchronized、vector、hashtable 3 自旋锁 CAS 4 可重入锁 synchronized、Reentrantlock、Lock 5 读写锁 ReentrantReadWriteLock,CopyOnWriteArray 阅读全文
posted @ 2020-09-05 10:33 npe0 阅读(313) 评论(0) 推荐(0) 编辑
摘要:一、死锁产生的四个必要条件 1.1、互斥 即当资源被一个线程使用(占有)时,别的线程不能使用 1.2、不可剥夺 资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。 1.3、请求和保持 即当资源请求者在请求其他的资源的同时保持对原有资源的占有。 1.4、循环等待 即存在一个等待 阅读全文
posted @ 2020-09-05 00:55 npe0 阅读(291) 评论(0) 推荐(0) 编辑
摘要:一、CountDownLatch 字面意思:倒计时锁闩,该类可以实现一个线程在等其他多个线程执行完之后,继续执行。 入参是一个计数器的值,当一个线程执行完毕时调用countDown()方法,计数器值会减1,当计数器值为0时,被await()阻塞的线程将被唤醒。 CountDownLatch latc 阅读全文
posted @ 2020-09-03 20:28 npe0 阅读(217) 评论(0) 推荐(0) 编辑
摘要:一、Thread public class Thread(){ //省略部分 //属于这个线程的ThreadLocals,这个map由ThreadLocal类维护 ThreadLocal.ThreadLocalMap threadLocals = null; //省略部分 } 二、ThreadLoc 阅读全文
posted @ 2020-08-20 09:59 npe0 阅读(164) 评论(0) 推荐(0) 编辑
摘要:1 package com.duchong.demo.demox.hutool.threadpool; 2 3 import com.google.common.util.concurrent.ThreadFactoryBuilder; 4 5 import java.util.ArrayList; 6 import java.util.List; 7 import java.util.concu 阅读全文
posted @ 2019-09-05 09:19 npe0 阅读(1067) 评论(0) 推荐(0) 编辑
摘要:一、需求 A、B、C 三个线程,循环10次,打印出自己的名称,ABC,ABC,ABC... A、B、C 三个线程,循环10次,打印出自己的名称,A一次,B三次,C五次,ABBBCCCCC,ABBBCCCCC 1.1、循环打印ABC 结果: 1.2、循环打印ABBBCCCC 结果: 阅读全文
posted @ 2019-01-21 14:19 npe0 阅读(860) 评论(0) 推荐(0) 编辑
摘要:一、需求 多个线程再获取同一个集合里面的数据同时,修改集合中的数据。 二、有问题的写法 结果: 3、CopyOnWriteArrayList 问题解决。 阅读全文
posted @ 2019-01-18 18:23 npe0 阅读(1084) 评论(0) 推荐(0) 编辑
摘要:一、CountDownLatch jdk提供的一个同步辅助类,在完成一组在在其他线程中执行的操作前,允许一个或者多个其他的线程等待,通过调用 await() 方法阻塞,直到由于 countDown() 方法的调用而导致当前计数达到零,之后所有等待线程被释放。 二、计算多个线程执行时间 阅读全文
posted @ 2019-01-17 14:46 npe0 阅读(622) 评论(0) 推荐(0) 编辑
摘要:一、什么是原子性 简单的可以理解为:操作是不可再分割的,比如; 但是i++的操作是可以再分的,比如: 上面的代码在多线程环境下取值是有问题的,比如: 结果: 这种问题当然可以通过加synchronized 关键字来解决,那有没有另外一种方案呢,答案肯定是有的,且在jdk1.5的时候就有了,那就是At 阅读全文
posted @ 2019-01-07 19:51 npe0 阅读(2546) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示