- 博客(4)
- 资源 (1)
- 收藏
- 关注
原创 那些年你不知道的并发知识(下)
并发基础模块 Semaphore(信号) 注: 并发编程内容 主要方法 Semaphore semaphore = new Semaphore(size); 构造方法, 给一个int类型的参数. 这个参数,代表着信号量的大小 也可以叫做虚拟的许可, 初始化构造许可的大小 semaphore.acquire(); 获得许可(只要还有剩余许可), 如果没有许可,那么acquire将阻塞直到有许可(...
2019-01-07 10:52:50 1522 4
原创 那些年你不知道的并发知识(上)
知识摘要: 会讲线程安全 锁的一些相关. volatile变量 竞态条件 线程的原子性和可见性, 指令重排序. 对象的安全发布和逸出. 和一些并发的工具(信号量 栅栏 闭锁 future) 多线程与算法结合 线程安全性 以前我们编写串行化的知识,很少考虑到你的结果是不是因为非逻辑的错误. 在多线程的情况下.就不得不为安全性去考虑了. 比如,你统计你Web服务器一天的访问量.如果有大量的数据的时候,...
2019-01-06 17:40:44 419
原创 AQS(AbstractQueuedSynchronizer)源码(二)读写锁
这一次基于读写锁的讲解 共享模式 这里基于ReentrantReadWriteLock讲解 ReentrantReadWriteLock 管理了一个读锁 和 一个写锁 其中读-读共享, 读-写互斥(独占), 写-写(互斥) 因为在并发读和写的时候容易发生脏读问题 至于为什么使用ReentrantReadWriteLock我们大部分是使用一把锁, 读和写都锁起来 但是 如果只读的话对数据没有什么影响...
2019-01-01 14:32:19 605
原创 AQS(AbstractQueuedSynchronizer)源码(一)
AQS(AbstractQueuedSynchronizer)源码(一) AbstractQueuedSynchronizer是并发编程的核心框架 ReentrantLock. ReadWriteLock. CountDownLatch等都是基于他实现的 public abstract class AbstractQueuedSynchronizer extends AbstractOwnable...
2019-01-01 13:23:42 364
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人