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