
并发
Mrdarin
这个作者很懒,什么都没留下…
展开
-
【并发】Java锁分类
在Java并发领域,根据锁的状态、特性、粒度、轻重等有不同的分类方法,很多并发书籍或者文章都会或多或少提及一些专有的锁名词,为了理解各种分类的分类方法、原理及作用,在此特意总结一下。一、乐观锁/悲观锁乐观锁:乐观地认为对于同一个数据来说不会被其他线程修改,因此不会加锁。更新数据的时候,借助冲突检查机制来判断更新过程中是否存在来自其他线程的干扰,存在则操作失败,并且可以重试。乐...原创 2019-03-13 14:43:55 · 208 阅读 · 0 评论 -
【并发】进程间通信与线程间通信
一、进程和线程进程:简单来说,一个进程就是一个正在执行的程序实例,包括程序计数器、寄存器、程序上下文等信息。进程是资源分配的最小单位,每个进程拥有自己的地址空间,因此当一个进程崩溃时,其他进程不会受到影响。线程:线程又称为轻量级进程,是CPU调度的最小单位,对于同一个进程所拥有的多个线程是共享同一个地址空间的,因此一个线程崩溃很容易引起整个进程的崩溃。二、进程间通信与同步1、...原创 2019-03-18 23:38:18 · 367 阅读 · 0 评论 -
【并发】Java线程池
线程池顾名思义就是指管理一组同构工作线程的资源池,线程池与工作队列(Work Queue)密切相关,工作队列中保存了所有等待执行的任务。线程池管理的线程的任务就是从工作队列中获取一个任务、执行任务,然后返回线程池并等待下一个任务。一、线程池的优势1、减少线程的创建与销毁所带来的开销,同时任务不需要等待线程创建的时间而可以直接执行,只要有空闲线程的话2、减少空闲活跃线程所带来的CP...原创 2019-04-21 23:21:32 · 207 阅读 · 0 评论 -
【并发】AQS源码分析
AQS全称是AbstractQueuedSynchronizer,是JDK提供的一个同步器设计框架,很多并发数据结构如ReentrantLock、ReentrantReadWriteLock、Semaphore等都是基于AQS来实现的,下面来分析一下AQS的原理。一、底层数据结构AQS底层维护了一个state(代表共享资源)和一个CLH队列(代表线程等待队列)state:stat...原创 2019-04-18 12:56:52 · 186 阅读 · 0 评论 -
【Java】VarHandle解析
一、VarHandle简介变量句柄(VarHandle)是对于一个变量的强类型引用,或者是一组参数化定义的变量族,包括了静态字段、非静态字段、数组元素等,VarHandle支持不同访问模型下对于变量的访问,包括简单的read/write访问,volatile read/write访问,以及CAS访问。VarHandle相比于传统的对于变量的并发操作具有巨大的优势,在JDK9引入了VarHa...原创 2019-04-19 22:05:55 · 6634 阅读 · 0 评论