并发编程
并发
AnEra
厚积薄发, 天道酬勤
展开
-
Java并发编程_volatile可见性底层实现原理
JMM(java memory model) java内存模型主要目标是定义程序中的变量,(此处所指的变量是实例字段、静态字段等,不包含局部变量和函数参数,因为这两种是线程私有无法共享)在虚拟机中存储到内存与从内存读取出来的规则细节,Java 内存模型规定所有变量都存储在主内存中,每条线程还有自己的工作内存,工作内存保存了该线程使用到的变量到主内存副本拷贝,线程对变量的所有操作(读取、赋值)都必须...原创 2019-07-21 17:14:45 · 279 阅读 · 0 评论 -
Java并发编程_Synchronized底层原理
一、概念 是利用锁的机制来实现同步的。 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。 可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的(即在获得锁时应获得最新共享变量的值),否则另一个线程可能...原创 2019-07-26 14:55:03 · 276 阅读 · 0 评论 -
Java并发编程_深入分析CAS在原子类中应用
1. 什么是CAS? CAS (compareAndSwap),中文叫比较交换,一种无锁原子算法。过程是这样:它包含 3 个参数 CAS(V,E,N),V表示要更新变量的值,E表示预期值,N表示新值。仅当 V值等于E值时,才会将V的值设为N,如果V值和E值不同,则说明已经有其他线程做两个更新,则当前线程则什么都不做。最后,CAS 返回当前V的真实值。CAS 操作时抱着乐观的态度进行的,它总是认为...原创 2019-07-30 11:56:52 · 233 阅读 · 0 评论 -
Java并发编程_AQS(AbstractQueuedSynchronizer)详解
1. AQS简介 AQS,AbstractQueuedSynchronizer,即队列同步器。它是构建锁或者其他同步组件的基础框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等),JUC并发包的作者(Doug Lea)期望它能够成为实现大部分同步需求的基础。它是JUC并发包中的核心基础组件。 AQS解决了实现同步器时涉及当的大量细节问题,例如获取...原创 2019-07-30 15:17:06 · 395 阅读 · 0 评论 -
Java并发编程_AQS(AbstractQueuedSynchronizer)应用
1. 自定义锁 AQS子类定义为非公共内部帮助器类(私有的内部类继承AQS),写锁的时候的一个帮助器,提供获取锁和是释放锁的功能模板 package com.lic.AQS; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.AbstractQueuedSynchronizer; import java...原创 2019-07-30 15:58:29 · 149 阅读 · 0 评论 -
Java并发编程_并发集合
Java并发集合框架 非阻塞式集合:这类集合包括添加和移除的方法,如果方法不能立即被执行,则返回null或抛出异常,但是调用这个方法的线程不会被阻塞。 阻塞式集合:这类集合也包括添加和移除的数据方法。当集合已满或为空时,被调用的添加或者移除方法就不能立即被执行,那么调用这个方法的线程将被阻塞,一直到该方法可以被成功执行。 1. 非阻塞集合 1.1 ConcurrentLinkedQueue 一个...原创 2019-07-31 15:05:24 · 241 阅读 · 0 评论 -
Java并发编程_线程池
1. 线程池的状态 线程的五种状态:新建,就绪,运行,阻塞,死亡 线程池的五种状态:RUNNING, SHUTDOWN, STOP, TIDYING, TERMINATED。 private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); private static final int COUNT_BITS...原创 2019-07-31 17:20:52 · 162 阅读 · 0 评论 -
Java并发编程_Java线程的状态
操作系统线程的五种状态:新建, 就绪, 运行, 阻塞, 死亡 那Java线程的状态也是这五种吗? 不, Java线程是六种状态 在Thread类的定义中是以下六种状态: public static final class State extends Enum { public static State[] values() { re...原创 2019-08-02 11:26:40 · 128 阅读 · 0 评论