多线程并发
道友,且慢
不愤不启,不悱不发,学习就应该是问题驱动的。
微信: bclz_007
展开
-
多线程的活跃性问题
死锁:两个线程相互等待对方释放资源饥饿: 多线程并发时,优先级低的线程永远得不到执行线程被永久阻塞在等待进入同步块的状态等待的线程永远不被唤醒活锁:活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试—失败—尝试—失败的过程。处于活锁的实体是在不断的改变状态,活锁有可能自行解开。 如何避免饥饿问题对于优先级引发的饥饿问题,用setPriority设置...原创 2018-07-10 00:53:01 · 1002 阅读 · 1 评论 -
单例模式线程安全性问题的分析
饿汉式public class Singleton { // 私有化构造方法 private Singleton() {} private static Singleton s = new Singleton(); public static Singleton getInstance() { return s; }}无线程...原创 2018-07-10 21:05:04 · 228 阅读 · 0 评论 -
volatile的底层实现原理
加了volatile后,编译的汇编语言中多了LOCK指令,那么这个指令的作用是什么呢?LOCK指令作用将当前缓存行的内容写回到内存中,这个写回内存的操作会使得其他cpu里缓存的内容失效因此volatile能够实现线程间数据的可见性。...原创 2018-07-11 06:56:33 · 498 阅读 · 0 评论 -
JDK原子类的原理和使用
基本类型的原子类public class Sequence { private AtomicInteger value = new AtomicInteger(0); public int getNext() { return value.getAndIncrement(); }}基本类型的原子类除了AtomicInteger 外还有Atomic...原创 2018-07-11 07:27:55 · 259 阅读 · 0 评论 -
Lock对比synchronized的优势
能够显示地获取和释放锁,锁的运用更灵活可以方便地实现公平锁能够响应中断,非阻塞获取锁原创 2018-07-12 15:44:14 · 1727 阅读 · 0 评论 -
AQS源码解读(AbstractQueuedSynchronizer)
首先类看一下AQS的静态内部类Nodestatic final class Node { /** 这个变量作为共享模式下的节点。。。好吧还不太明白它的作用,后面搞清楚再改*/ static final Node SHARED = new Node(); /** 这个变量作为独占模式下的节点。。。好吧还不太明白它的作用,后面搞清楚再改 */ ...原创 2018-07-22 20:54:48 · 219 阅读 · 0 评论