随笔分类 - 并发编程
摘要:一、前言 上一篇最后讲到了AbstractExecutorService,这一篇接着说ThreadPoolExecutor。 二、ThreadPoolExecutor ThreadPoolExecutor这个类中实现了一系列java线程池管理最核心的方法,再来回顾一下他的属性及使用方法。 1、属性
阅读全文
摘要:一、线程的生命周期 线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁。 新建:就是刚使用new方法,new出来的线程; 就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行; 运行:当就绪的线程被调度并获得CPU资源时,便进入
阅读全文
摘要:一、简介 java8开始,ConcurrentHashMap摒弃了原有的Segment + HashEntry + Unsafe的实现,采用了Synchronized + CAS + Node + Unsafe的实现,使得性能进一步的提高。 二、源码剖析 1、put操作 public V put(K
阅读全文
摘要:一、简介 AQS全称为AbstractQueuedSynchronizer,它提供了一个FIFO(First in First out 先入先出)队列,可以看成是一个用来实现同步锁以及其他涉及到同步功能的核心组件,常见的有:ReentrantLock、CountDownLatch等。AQS是一个抽象
阅读全文
摘要:一、简介 在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使用恰
阅读全文
摘要:一、简介 在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着Java SE 1.6对synchronized进行了各种优化之后,有些情况下它就并不那么重了。本文详细介绍Synchronized的实现原理,减少获得锁和释放锁带来的性能消耗而引入的偏向锁和
阅读全文

浙公网安备 33010602011771号