并发编程
架构师肖邦
这个作者很懒,什么都没留下…
展开
-
线程基础知识(一)
一、线程是什么? 程序执行流的最小单元,也叫轻量级进程二、线程的5种状态 1、新建(NEW)新建了一个线程 2、就绪(RUNNABLE)调用start方法,处于待命阶段,只要得到军令(获得CPU时间片),立即执行命令(执行run方法) 3、运行(RUNNING)拥有CPU时间片这段时间内,执行具体命令 4、阻塞(BLOCKED)线程因为...原创 2018-04-12 10:52:23 · 17880 阅读 · 0 评论 -
原子操作(二)
一、什么是原子操作不可被中断的一个或一系列操作二、Java中如何实现原子操作通过锁和循环CAS(自旋)的方式来实现三、什么是CAS(Compare And Swap)CPU的原子锁技术,由CPU提供的CMPXCHG指令保证//AtomicInteger的计数是典型的CASpublic final int incrementAndGet() { for (;;) { ...原创 2018-04-12 10:55:16 · 17836 阅读 · 0 评论 -
AQS分析(AbstractQueuedSynchronizer)(三)
1、AQS是什么 AQS同步器是Java并发编程的基础,从资源共享的角度分成独占和共享两种模式,像ReentrantLock、ThreadPoolExecutor、CountDownLatch等都是基于AQS来实现的,如图:2、AQS同步队列的基本结构 AQS维护了一个头节点(head)和一个尾节点(tail)结构的双向链表,当一个线程获取锁失败时,会将该线程打包成一个Node节点,挂到同步队...原创 2018-04-12 10:59:30 · 43560 阅读 · 0 评论