随笔分类 - 多线程与高并发
java多线程与高并发
发表于 2021-02-18 23:05阅读:324评论:0推荐:0
摘要:阅读全文 »
学习Guava的笔记
发表于 2021-02-18 21:58阅读:241评论:0推荐:0
摘要:阅读全文 »
本文主要浅析CopyOnWriteList使用以及原理。
发表于 2021-02-17 08:42阅读:522评论:0推荐:1
摘要:阅读全文 »
本系列研究总结高并发下的几种同步锁的使用以及之间的区别,分别是:ReentrantLock、CountDownLatch、CyclicBarrier、Phaser、ReadWriteLock、StampedLock、Semaphore、Exchanger、LockSupport,这是第三篇,主要总结Semaphore、Exchanger、LockSupport。
发表于 2021-02-16 21:52阅读:657评论:0推荐:0
摘要:阅读全文 »
本系列研究总结高并发下的几种同步锁的使用以及之间的区别,分别是:ReentrantLock、CountDownLatch、CyclicBarrier、Phaser、ReadWriteLock、StampedLock、Semaphore、Exchanger、LockSupport,这是第二篇,主要总结Phaser、ReadWriteLock、StampedLock。
发表于 2021-02-16 15:29阅读:1250评论:0推荐:0
摘要:阅读全文 »
本系列研究总结高并发下的几种同步锁的使用以及之间的区别,分别是:ReentrantLock、CountDownLatch、CyclicBarrier、Phaser、ReadWriteLock、StampedLock、Semaphore、Exchanger、LockSupport,这是第一篇,主要总结ReentrantLock、CountDownLatch、CyclicBarrier。
发表于 2021-02-14 12:19阅读:1287评论:0推荐:0
摘要:阅读全文 »
本文简单梳理了volatile和synchronized的区别,以及volatile读写流程。
发表于 2020-04-21 20:58阅读:1316评论:0推荐:0
摘要:Queue(队列)主要是为了高并发准备的容器Deque:双端队列,可以反方向装或者取 最开始jdk1.0只有Vector和hashtable 默认所有方法都实现了synchronized锁,线程安全但性能比较差,因此后续SUN意识到这个问题之后加了完全没加锁的hashmap,但是由于Hashmap完
阅读全文 »
发表于 2020-04-21 12:23阅读:436评论:0推荐:0
摘要:情景引入 ThreadLocal 在什么情况下可能发生内存泄漏?如果想清楚这个问题的来龙去脉,看源码是必不可少的,看了源码之后你发现,实际 ThreadLocal 中实际用到 static class Entry extends WeakReference> {} ,谜底实际就是使用了弱引用 Wea
阅读全文 »
发表于 2020-04-18 16:03阅读:184评论:0推荐:0
摘要:使用场景:常用于使用有限的资源,限制线程并发的最大数量。默认情况下,信号量是非公平性的(先等待先执行为公平。类似于买东西的时候大家排队付款,先来的先付款是公平的。但是这时候有人插队,那就是非公平的)设定信号量的最大个数:Semaphore semaphore=new Semaphore(3); 获取
阅读全文 »
发表于 2020-04-18 12:47阅读:236评论:0推荐:0
摘要:使用场景: 多个线程相互等待,直到都满足条件之后,才能执行后续的操作。CyclicBarrier描述的是各个线程之间相互等待的关系。 使用步骤: 正常实例化:CyclicBarrier sCyclicBarrier=new CyclicBarrier(3); 带runnable的实例化,打破屏障时,
阅读全文 »
发表于 2020-04-18 12:42阅读:196评论:0推荐:0
摘要:使用场景: 一个或N个线程,等待其它线程完成某项操作之后才能继续往下执行。CountDownLatch描述的是,一个或N个线程等待其他线程的关系。 使用方法: 设CountDownLatch个数:CountDownLatch countDownLatch=new CountDownLatch(3);
阅读全文 »
发表于 2020-04-17 18:12阅读:154评论:0推荐:0
摘要:CAS中的ABA问题CAS(V,Expected,NewValue),CAS自旋时,如果操作途中Expected值没有改变则会赋予其新的值(NewValue),如果发生改变则会将改变后的值赋给Expected重新进行上一步操作,但是这中间如果有其他线程将Expected的值改变为N之后又改回Expe
阅读全文 »
发表于 2020-04-16 22:57阅读:217评论:0推荐:0
摘要:Class文件加载到同一个ClassLoader空间中是单例的,如果是不同的classloader则不是单例。 synchronized如果加在静态方法中,则锁住的是类(一般方法中锁住的是this),等同于synchronize(T.class)。 synchronized锁住的任何对象,看对象头顶
阅读全文 »