高并发
小强的不死
这个作者很懒,什么都没留下…
展开
-
高并发---threadlocal
核心思想: 每个线程存有一个map,这个map里面数组存储entry,是键threadlocal对应的value。意思一个线程对应多个键threadlocal对应多个value;(看源码区分this和thread.currentthread,一个是字节码对象一个是当前线程对象) 核心元素:只有一点 ThreadLocal.ThreadLocalMap 下面三行代码来自Thread /* ...原创 2018-11-29 22:45:18 · 279 阅读 · 0 评论 -
高并发---CopyOnWriteArrayList
CopyOnWriteArrayList解读源码: 待续 demo: public class Write implements java.lang.Runnable{ java.util.concurrent.CopyOnWriteArrayList<Integer> copyOnWriteArrayList...原创 2018-12-21 23:25:17 · 155 阅读 · 0 评论 -
高并发---原子类
CAS无锁机制 automicInteger 待续原创 2018-12-04 00:58:25 · 184 阅读 · 0 评论 -
高并发---特性(有序性、可见性、原子性)
有序性、可见性、原子性 待续原创 2018-12-04 00:56:00 · 460 阅读 · 0 评论 -
高并发---锁
先说说常见锁工具的理解 一、ReentrantLock:重入锁,递归锁,轻量锁,悲观锁 public class A implements java.lang.Runnable{ java.util.concurrent.locks.Lock reentrantLock = new java.util.concurrent.locks.ReentrantLock(); ...原创 2018-12-01 11:53:04 · 214 阅读 · 0 评论 -
高并发---ThreadPool
待续原创 2018-12-01 10:24:04 · 206 阅读 · 0 评论 -
高并发---Queue
待续原创 2018-12-01 10:22:45 · 149 阅读 · 0 评论 -
高并发---Semaphore
Semaphore计数器,计数获取到才执行,没获取到,就阻塞等待 对比:CountDownLatch计数器,它不阻塞各个计数的地方,但是阻塞总计数的地方; CyclicBarrier栅栏,它阻塞它存在的地方,唯有大家都到齐了,才开始跑; public class test { java.util.concurrent.Semaphore semaphore = new java.ut...原创 2018-12-01 01:19:24 · 226 阅读 · 0 评论 -
高并发---CyclicBarrier
他在的地方都暂停了。只有都到齐了。才大家一起执行。这里是大家都暂停,楼下是总的地方暂停 跟计数器,CountDownLatch区别,计数器是我计数的地方不会暂停,但是呢,记总数的地方,暂停了。只有总数跟计数的个数加起来才总的地方执行; public class test { java.util.concurrent.CyclicBarrier cyclicBarrier = new j...原创 2018-12-01 01:12:00 · 109 阅读 · 0 评论 -
高并发---CountDownLatch计数器
CountDownLatch计数器,计数完毕,wait才开始执行 public class test { java.util.concurrent.CountDownLatch countDownLatch = new java.util.concurrent.CountDownLatch(2); public class A implements java.lang.Runna...原创 2018-12-01 01:02:39 · 242 阅读 · 0 评论 -
高并发---通信wait/notify
illlegalstateexception是lock对象,对象头标示没有给获取;即00,01等标识没有改变; public class test { public class C{ int i = 1; } public class A implements Runnable{ C lock; public A(C loc...原创 2018-11-30 23:52:22 · 130 阅读 · 0 评论 -
高并发---as if serial 重排序
重排序,存在多线程中的问题,在单线程中存在,但是不影响结果。不计较; 重排序是cpu与内存间性能优化产生的。寄存器存放值昂贵; 代码行,不存在数据依赖;即可以重排序; a的值为1赋值操作比b赋值true慢;颠倒了顺序。就是输出a值; public class test { int a = 0; boolean b = false; public class A im...原创 2018-11-30 23:16:31 · 129 阅读 · 0 评论 -
高并发---AtomicInteger
public class Count implements java.lang.Runnable{ String threadName; AtomicInteger a; public Count(String threadName,AtomicInteger a){ this.threadName = th...原创 2018-11-30 08:40:59 · 209 阅读 · 0 评论 -
高并发---volatile
可见性代表:volatile 保证输出最大值肯定是100,原子性没有保证,禁止重排序 public class Count implements java.lang.Runnable{ String threadName; volatile int a; public Count(String threadName,int a){...原创 2018-11-29 23:51:19 · 94 阅读 · 0 评论 -
高并发---分布式事务
一、2pc(two-phase commitment) 请求进来,生成全局雪花id,存本地线程变量,存request请求头部head; 消费者请求走服务1, 自己做hystrix熔断; 服务里面以标签配置事务,事务做切点的拦截,切面干事情,开启子线程,且把子线程阻塞,一旦放开阻塞走提交。请求主线程继续走,并返回结果。开启主线程,死循环检查过期事务;(locksupport,线程阻塞) ...原创 2019-01-25 17:19:43 · 297 阅读 · 0 评论