Java并发编程
关于java的并发编程
亚热带小番茄
2022届毕业生。某大厂从事go后端开发工作。熟悉java后端开发,熟悉python爬虫
展开
-
java线程池使用及ThreadPoolExecutor源码分析
文章目录1线程池基础使用1.1 概述1.2 线程池的优点1.3 Exector继承图1.4 ExecutorService接口1.5 Executors工具类1.5.1 生成各种线程池的方法1.5.2 方法的使用示例1.5.3 各个方法的源码返回ThreadPoolExecutor对象的方法:返回ScheduledThreadPoolExecutor对象的方法:返回ForkJoinPool对象的方法1.2.5 线程池的工作流程1.2.6 ThreadPoolExecutor参数1.2.7 自定义线程池---原创 2020-10-22 08:44:46 · 437 阅读 · 0 评论 -
Volatile底层实现- 线程可见,指令重排+volatile与synchronized对比+使用hsdis观察volatile及synchronized
文章目录volatile的用途1.线程可见性2.防止指令重排序例子:DCL单例需不需要加volatile?3. volatile与synchronized的区别CPU的基础知识用hsdis观察synchronized和volatile输出结果volatile的用途volatile本意是“易变的,可变的”,它的作用是来保证 线程的可见性,和防止指令重排1.线程可见性[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SOBgRKtz-1603325999246)(/User原创 2020-10-22 08:34:44 · 309 阅读 · 0 评论 -
Synchronized HotSpot底层实现-CAS + Unsafe类 + Synchronized锁升级
文章目录用户态与内核态CASUnsafe与原子类markword工具:JOL = Java Object Layoutsynchronized的横切面详解java源码层级字节码层级JVM层级(Hotspot)锁升级过程JDK8 markword实现表:锁重入synchronized最底层实现synchronized vs Lock (CAS)锁消除 lock eliminate锁粗化 lock coarsening参考资料说明:JVM并没有规定Synchronized应该怎么实现,这里说的是基于HotSp原创 2020-10-22 08:27:41 · 252 阅读 · 0 评论 -
Java锁-锁的分类+ReentrantLock+LockSupport
文章目录1. Java锁的种类1.1 乐观锁/悲观锁1.1.1 乐观锁(1) 数据版本机制(2) CAS操作1.2 悲观锁1.2 排他锁/共享锁1.3 读写锁1.4 可重入锁1.5 公平锁/非公平锁1.6 分段锁1.7 偏向锁/轻量级锁/重量级锁1.8 自旋锁2. Locks包3. Lock接口2.1 显示锁和隐式锁2.2 Lock接口规定的方法2.3 ReentrantLock2.3.1 使用示例2.3.2 ReentrantLock对比于synchronized的优点2.4 ReentrantReadW原创 2020-10-22 08:19:16 · 1339 阅读 · 1 评论 -
Java多线程基础-Thread类+多线程创建方法+实现线程同步
文章目录1. 线程的创建和启动1.1 概述1.2 创建多线程的方式一:继承Tread类1.3 Thread类常用方法1.4 线程优先级1.5 创建多线程的方式二:实现Runnalbe1.6 比较两种创建线程的方式1.7 线程的生命周期2. 线程同步2.1 最初的方式——synchronized2.1.1 同步方法块2.1.2 同步方法2.2 使单例模式变为线程安全的3. 锁——解决线程安全的方式二4. Lock与synchronized的异同5. 线程之间的通信5.1 wait()/notify()5.2原创 2020-10-22 08:13:58 · 906 阅读 · 1 评论 -
Java高并发容器
1. 高并发容器脑图我们之前就学习了Collection下面的List和Set两大类,Queue是后来(1.5)加入的接口,它专门就是为高并发准备的2. 从Hashtable到CHMHashtable之前说过,与Vector一样,是Map的一个古老的实现类,它的设计有不太合理的地方,比如:每一个方法都加了Synchronized。因为大多数的程序都是单个线程在跑;之后java的开发人员意识到了这一点,于是添加了一个HashMap,HashMap不只是把Synchronized去掉,它还把其他的原创 2020-10-22 08:14:27 · 494 阅读 · 0 评论 -
Java JUC包下Tools
1.2 CountDownLatch1.2.1 什么是CountDownLatchlatch-门栓 countdown-倒数。 倒数到0门栓打开。CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier、Semaphore、ConcurrentHashMap和BlockingQueue,它们都存在于java.util.concurrent包下。CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用原创 2020-10-22 08:14:40 · 114 阅读 · 0 评论 -
Java ThreadPoolExecutor源码解析
ThreadPoolExecutor源码解析1、常用变量的解释// 1. `ctl`,可以看做一个int类型的数字,高3位表示线程池状态,低29位表示worker数量private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));// 2. `COUNT_BITS`,`Integer.SIZE`为32,所以`COUNT_BITS`为29private static final int COUNT_BITS = Integ原创 2020-10-21 09:57:34 · 347 阅读 · 0 评论 -
深入理解ThreadLocal底层实现及其内存泄漏问题
原文链接1. ThreadLocalMapThread类中包含了一个这样的成员变量: /* ThreadLocal values pertaining to this thread. This map is maintained * by the ThreadLocal class. */ ThreadLocal.ThreadLocalMap threadLocals = null;也就是说,每一个Thread实例都有一个属于自己ThreadLocalMap,这个容器原创 2020-08-11 08:02:35 · 766 阅读 · 0 评论