锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系…
分类:java并发
Java显式锁学习总结之四:ReentrantLock源码分析
概述 ReentrantLock,即重入锁,是一个和synchronized关键字等价的,支持线程重入的互斥锁。只是在synchronized已有功能基础上添加了一些扩展功能。 除了支持可中断获取锁、超时获取锁、非阻塞获…
Java高并发之无锁与Atomic源码分析
目录 无锁即无障碍的运行, 所有线程都可以到达临界区, 接近于无等待. 无锁采用CAS(compare and swap)算法来处理线程冲突, 其原理如下 CAS原理 CAS包含3个参数CAS(V,E,N).V表示要更新…
【Java并发编程】:加锁和volatile变量
加锁和volatile变量两者之间的区别: 1、volatile变量是一种稍弱的同步机制在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此v…
Java计数锁CountDownLatch
裁判吹一声口哨,所有运动员,开始跑,但所有运动员到达终点,裁判宣布比赛结束。如果将 运动员看做多线程。 适用环境:如多线程下载,多个线程在一个文件,当同时开启多个线程下载一个文件, 直到所有线程下载结束。才通知文件下载完…
java多线程系列12 ConcurrentHashMap CopyOnWriteArrayList 简介
我们知道 ,hashmap 和 arraylist 是线程不安全的 在多线程环境下有数据安全问题, 当然 我们可以通过Collections的一些方法把他们变成线程安全的,  …
java后台面试题整理
java基础 Arrays.sort实现原理和Collection实现原理foreach和while的区别(编译之后)线程池的种类,区别和使用场景分析线程池的实现原理和线程的调度过程线程池如何调优线程池的最大线程数目根据…
线程笔记-JUC包中的原子操作类(AtomicReference)
在java 1.5的java.util.concurrent.atomic包下提供了一些原子操作类,即对基本数据类型的 自增(加1操作),自减(减1操作)、以及加法操作(加一个数),减法操作(减一个数)进行了封装,保证这…
java多线程系列--"JUC"原子类 04 之AtomicReference原子类
AtomicReference介绍和函数列表 AtomicReference函数列表 // 使用 null 初始值创建新的 AtomicReference。 AtomicReference() // 使用给定的初始值创建…
JUC Semaphore 分析
基本介绍 Semaphore,JUC中提供的一个并发组件,根据字面理解是信号量的意思。Semaphore能够实现的功能是允许多个线程同时获取共享资源,实际是共享锁(基于AQS的共享实现模式)的实现。获取不到资源的线程会进…
Java线程池架构2-多线程调度器(ScheduledThreadPoolExecutor)
在前面介绍了java的多线程的基本原理信息:《Java线程池架构原理和源码解析(ThreadPoolExecutor)》,本文对这个java本身的线程池的调度器做一个简单扩展,如果还没读过上一篇文章,建议读一下,因为这是…
[原]《Java 并发编程实战》读书笔记之一:可重入内置锁
每个Java对象都可以用做一个实现同步的锁,这些锁被称为内置锁或监视器锁。线程在进入同步代码块之前会自动获取锁,并且在退出同步代码块时会自动释放锁。获得内置锁的唯一途径就是进入由这个…