java-并发
尹忠政
奋斗的年纪
展开
-
Java并发-Java内存模型
Java内存模型概念Java Memory Model(JMM)决定了一个线程对共享变量做出的修改何时对另一个线程可见*。每一个线程对都有一块儿本地内存(本地内存是JVM的一个抽象概念,并不是真实存在的,它涵盖了缓存、写缓冲区、寄存器以及其它硬件和编译器优化)本地内存存放的是用以读/写的共享变量在主内存的一个副本多线程通信 线程A-->本地内存-刷新->主内存 ...原创 2018-12-12 15:19:21 · 144 阅读 · 0 评论 -
Java并发-深入理解Semaphore(信号量)之源码解析
深入理解Semaphore(信号量)Semaphore借助AQSSync 继承 AbstractQueuedSynchronizer(AQS同步器)NonfairSync Sync的非公平实现FairSync Sync的公平实现为什么事先Lock接口?因为,lock和unlock没有参数,无法达到此效果套路(同ReentrantLock)AQS操作,是集成AQS类作为静态...原创 2018-12-18 00:15:32 · 294 阅读 · 1 评论 -
java并发-特大疑问-阻塞队列(BlockingQueue)
java并发-阻塞队列(BlockingQueue)何为阻塞队列A {@link java.util.Queue} that additionally supports operationsthat wait for the queue to become non-empty when retrieving anelement, and wait for space to become ...原创 2018-12-22 18:03:44 · 239 阅读 · 2 评论 -
java并发-读写锁&Park&Condition接口
RentrantReadWriteLock核心读状态取state的高16位,写状态取state的低16位,来解决一个state需要标识read和write的状态。写Lock 排他、独占式的读Lock 共享式的示例/** * describe: * E-mail:yzzstyle@163.com date:2018/12/16 * * @Since 0.0.1 */...原创 2018-12-16 22:03:46 · 454 阅读 · 0 评论 -
java并发-Synchronized+CAS方式实现读写锁
Synchronized+CAS方式实现读写锁文章目录Synchronized+CAS方式实现读写锁思路技术代码测试结果[GitHub主页](https://github.com/yinzhongzheng/study)思路读可读读不能写写不能读写不可写技术CAS 无锁机制,线程安全的更新读写状态synchronized 读线程的资源控制,控制写写的情况代码/** ...原创 2018-12-16 15:45:46 · 1400 阅读 · 0 评论 -
java并发-重入锁(ReentrantLock)
文章目录重入锁(ReentrantLock)含义公平锁和非公平锁使用[GitHub主页](https://github.com/yinzhongzheng/study)重入锁(ReentrantLock)含义重入锁,标识在一个线程中,可重复对该资源重复加锁。synchronized就是重入锁ReentrantLock也支持冲入操作是排它锁(独占锁)针对于AQS实现重入功能...原创 2018-12-16 13:32:25 · 256 阅读 · 0 评论 -
Java并发-AQS
同步器 AbstractQueuedSynchronizer(AQS)理解同步器维护了一个同步队列(双向链表),指定了基础的同步策略支持 独占 和 共享两种模式运用了大量的CAS和自旋操作AQS做了在获取不到锁的时候,入队操作 以及出队和唤醒操作AQS 实际上市没有锁的,是通过将线程装入同步队列中,通过自旋即“死循环”的操作来阻塞线程,通过CAS来实现线程状态的原子性切换切换...原创 2018-12-15 22:19:09 · 173 阅读 · 0 评论 -
Java并发-Lock
文章目录Lock方法与synchronized的区别Lock方法void lock();获取锁,当该锁没有获取到,当前线程不能被线程调度,处于休眠状态void lockInterruptibly() throws InterruptedException;当前线程没有interrupted的前提下获取锁,会有InterruptedException异常boolea...原创 2018-12-15 14:49:08 · 498 阅读 · 0 评论 -
Java并发-volatile和synchronized
Java并发和多线程基础总结基础volatile和synchronizedvolatile功能保证多线程的可见性禁止一部分的重排序。原理instance = new Singleton(); // instance是volatile变量0x01a3de1d: movb $0×0,0×1104800(%esi);0x01a3de24: **lock** addl $0×0,(%e...原创 2018-12-09 21:27:52 · 211 阅读 · 0 评论 -
java并发-生产者与消费者大揭秘
生产者与消费者接口操作中心/** * describe: * E-mail:yzzstyle@163.com date:2018/12/19 * * @Since 0.0.1 */public interface ICenter { void produce(); void consume();}生产者/** * describe: * ...原创 2018-12-19 22:27:25 · 436 阅读 · 0 评论 -
Java并发-Thread
线程知识线程优先级在java中,通过setPriority()方法来设置线程优先级。默认是5,线程优先级高的线程会分配更多是时间片。对于阻塞的线程(休眠/IO操作的)要分配更高的优先级,保证处理器不会被CPU密集型的的线程独占。why? 长时间阻塞操作,CPU会进行线程切换。???但是程序不能依靠该优先级线程类型Daemon线程(守护线程)一般用作后台支持型的工作,JVM...原创 2018-12-14 11:00:02 · 133 阅读 · 0 评论 -
java并发-模拟秒杀
模拟秒杀思路对每个秒杀请求入队操作当库存为N时,队列的长度超过N时,可以考虑拒绝后续请求,直接响应客户端秒杀结束为了减轻库存处理的压力,验证并发量,这里通过信号量来控制线程安全。编码通过Semaphore来控制并发量通过CAS来控制更新库存,保证线程安全/*** * 模拟秒杀 */public class Knock { /** * CAS操作的类...原创 2018-12-19 14:35:28 · 970 阅读 · 0 评论 -
java并发-CountDownLatch和CyclicBarrier源码解析
CountDownLatch和CyclicBarrier在看Curator的时候,看到了分布式屏障的设计,所以回头仔细看看Jdk的CyclicBarrier实现思路。这里CountDownLatch和CyclicBarrier的作用有点类似,就一并分析了。CountDownLatch特点是一个原子递减操作,当计数器为0的时候,所有等待的线程将释放,阻塞状态将打开。只能使用一次,...原创 2019-01-03 21:59:03 · 234 阅读 · 0 评论