
高并发
小强的不死
这个作者很懒,什么都没留下…
展开
-
高并发---threadlocal
核心思想:每个线程存有一个map,这个map里面数组存储entry,是键threadlocal对应的value。意思一个线程对应多个键threadlocal对应多个value;(看源码区分this和thread.currentthread,一个是字节码对象一个是当前线程对象)核心元素:只有一点ThreadLocal.ThreadLocalMap下面三行代码来自Thread/* ...原创 2018-11-29 22:45:18 · 305 阅读 · 0 评论 -
高并发---CopyOnWriteArrayList
CopyOnWriteArrayList解读源码: 待续 demo:public class Write implements java.lang.Runnable{ java.util.concurrent.CopyOnWriteArrayList<Integer> copyOnWriteArrayList...原创 2018-12-21 23:25:17 · 183 阅读 · 0 评论 -
高并发---原子类
CAS无锁机制automicInteger待续原创 2018-12-04 00:58:25 · 214 阅读 · 0 评论 -
高并发---特性(有序性、可见性、原子性)
有序性、可见性、原子性待续原创 2018-12-04 00:56:00 · 489 阅读 · 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 · 242 阅读 · 0 评论 -
高并发---ThreadPool
待续原创 2018-12-01 10:24:04 · 230 阅读 · 0 评论 -
高并发---Queue
待续原创 2018-12-01 10:22:45 · 175 阅读 · 0 评论 -
高并发---Semaphore
Semaphore计数器,计数获取到才执行,没获取到,就阻塞等待对比:CountDownLatch计数器,它不阻塞各个计数的地方,但是阻塞总计数的地方;CyclicBarrier栅栏,它阻塞它存在的地方,唯有大家都到齐了,才开始跑;public class test { java.util.concurrent.Semaphore semaphore = new java.ut...原创 2018-12-01 01:19:24 · 244 阅读 · 0 评论 -
高并发---CyclicBarrier
他在的地方都暂停了。只有都到齐了。才大家一起执行。这里是大家都暂停,楼下是总的地方暂停跟计数器,CountDownLatch区别,计数器是我计数的地方不会暂停,但是呢,记总数的地方,暂停了。只有总数跟计数的个数加起来才总的地方执行;public class test { java.util.concurrent.CyclicBarrier cyclicBarrier = new j...原创 2018-12-01 01:12:00 · 129 阅读 · 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 · 267 阅读 · 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 · 157 阅读 · 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 · 145 阅读 · 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 · 231 阅读 · 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 · 119 阅读 · 0 评论 -
高并发---分布式事务
一、2pc(two-phase commitment)请求进来,生成全局雪花id,存本地线程变量,存request请求头部head;消费者请求走服务1,自己做hystrix熔断;服务里面以标签配置事务,事务做切点的拦截,切面干事情,开启子线程,且把子线程阻塞,一旦放开阻塞走提交。请求主线程继续走,并返回结果。开启主线程,死循环检查过期事务;(locksupport,线程阻塞)...原创 2019-01-25 17:19:43 · 322 阅读 · 0 评论