
并发编程
Anguser
屌丝架构师的程序猿之路!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
从计算机底层来解析java内存结构!
Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。 Java内存模型规定了所有的变量都存储在主内存中(Main memory)中。每条线程都有自己的工作内存(可与前面讲的高速缓存做类比),线程的工作内存中保存了该线程使用到的变量的主内存的副本拷贝。原创 2017-11-30 23:17:17 · 875 阅读 · 0 评论 -
手写实现一个可重入锁!
代码如下:public class MyLock implements Lock{ Thread lockBy = null; int lockCount = 0; //锁标志 private boolean isLocked = false; /* * 加锁 * (non-Javadoc) * @see java.util.c原创 2017-12-31 23:12:43 · 1475 阅读 · 0 评论 -
使用java来实现阻塞队列
* BlockingQueue: 顾名思义,首先它是一个队列,并且支持阻塞机制,阻塞的放入和阻塞的得到数据原创 2017-08-27 21:02:58 · 4439 阅读 · 6 评论 -
并发编程之Future模式的模拟实现
Future模式的核心就是,使原本需要等待的时间段可以用于处理其他业务逻辑。记住这句话就行了。 先来看一个Future的案列:/** * future的使用 * @author 莱格 * */import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.ut原创 2018-01-03 15:36:01 · 758 阅读 · 0 评论 -
AQS源码分析
AQS源码分析 CLH同步队列 CLH同步队列是一个FIFO双向队列,AQS依赖它来完成同步状态的管理,当前线程如果获取同步状态失败时,AQS则会将当前线程已经等待状态等信息构造成一个节点(Node)并将其加入到CLH同步队列,同时会阻塞当前线程,当同步状态释放时,会把首节点唤醒(公平锁),使其再次尝试获取同步状态。 在AQS中维护着一个FIF...原创 2018-12-12 16:05:26 · 213 阅读 · 0 评论 -
java并发编程笔记01 --如何避免死锁&资源限制以及volatile实现原理
避免死锁的方法: 1、避免一个线程同时获取多个锁 2、避免一个线程在锁内同时占用多个资源,尽量保证每一个锁只占用一个资源。 3、尝试使用定时锁,用lock.tryLock 代替内部的锁机制。 4、对于数据库的锁,加锁和解锁必须在同一个数据库连接里,否则会出现解锁失败的情况。 什么事资源限制: 1、硬盘的读写速度,CPU的处理速度,带宽 资源限制引发的问题: 1、受限于资...原创 2019-08-10 14:50:19 · 293 阅读 · 0 评论