java并发
小炫剑指大厂
主要为应届生提供校招或者实习的经验,以及技术博文。
欢迎关注公众号:小炫剑指大厂
展开
-
读写锁中 为什么读锁不能升级为写锁
读锁升级为写锁。首先自己有读锁,之后拿到写锁。如果有两个读锁同时升级为写锁。那么只有一个能升级成功。但是这两个线程同时拥有读锁。其中一个线程还一直在申请写锁。这就会造成死锁。但是锁降级是可以的。因为写锁只有一个线程占有。锁降级:锁降级指的是写锁降级成为读锁。如果当前线程拥有写锁,然后将其释放,最后再获取读锁,这种分段完成的过程不能称之为锁降级。锁降级是指把持住(当前拥有的)写锁,再...原创 2019-11-06 08:31:29 · 3525 阅读 · 0 评论 -
为什么公平锁的性能低于非公平锁
我们必须先知道,在恢复一个被挂起的线程与该线程真正开始运行之间存在着严重的延迟。原创 2019-11-05 17:31:19 · 2154 阅读 · 0 评论 -
java并发(二)CAS操作
在java中,使用锁线程会被阻塞,而且阻塞的时候线程切换上下文会有很大的开销。而volatile也只能解决共享变量中可见性的问题。不能解决原子问题。CAS通过硬件保证了原子性,而且是非阻塞的。下面以一个方法简单介绍public final native boolean compareAndSwapInt(Object o, long offset, ...原创 2019-07-31 20:12:52 · 1562 阅读 · 0 评论 -
java并发(一)线程中断 interrupt()
首先我们要明白线程中断并不能终止该线程的执行,被中断的线程根据自己的中断状态自己处理。举个例子。你正在学习,妈妈大声跟你说来吃饭了(此时就调用了interrupt())方法。这时候你知道了,哦,可以吃饭了。但是我还是想写完这道题目再去吃饭。当你写完这道题目。调用 isInterrupted()方法 后,返回true。 原来有人告诉我已经可以吃饭了。好的。停止学习(中断线程)去吃饭。好了...原创 2019-07-27 15:12:56 · 1641 阅读 · 0 评论 -
java并发(三)CopyOnWriteArrayList源码分析
先看前面一部分 private static final long serialVersionUID = 8673264195747942595L;//用于序列化 /** The lock protecting all mutators */ final transient ReentrantLock lock = new ReentrantLock();//锁 ...原创 2019-08-06 20:46:39 · 1599 阅读 · 0 评论