
多线程与高并发
tgn123456
这个作者很懒,什么都没留下…
展开
-
多线程与高并发10-JMH,Disruptor
JMH可以进行代码性能测试。进行方法的吞吐量测试。QPS,TPSQPS:是Queries Per Second的缩写,意思是每秒查询率(最大吞吐能力)TPS:是Transactions Per Second的缩写,也就是事务数/秒(最大处理能力)Disruptor基础理论分裂瓦解性能极高,单线程每秒处理600万订单速度最快的MQ,无锁CAS,单机支持高并发已以往队列的结构不同,使...原创 2020-03-27 20:23:18 · 400 阅读 · 0 评论 -
多线程与高并发9-线程池2
Executors线程池工厂(ThreadPoolExecutor)newSingleThreadPool();单线程池,保证任务按顺序执行。线程池封装了任务队列及线程池声明周期。底层使用LinkedBlockingQueue,最大值Integer.MAX_VALUE,阿里开发者手册不推荐使用jdk提供的线程池,无拒绝策略。newCachedThreadPool();核心线程数为0,最大线...原创 2020-03-27 16:12:34 · 150 阅读 · 0 评论 -
多线程与高并发8-线程池1
Executor、 ExecutorService、ThreadPoolExecutorExecutor:定义并运行线程ExecutorService:继承于Executor。扩展了executor接口。实现了控制线程的声明周期ThreadPoolExecutor:线程池Executor->ExecutorService->ThreadPoolExecutorCallable...原创 2020-03-26 23:12:41 · 169 阅读 · 0 评论 -
多线程与高并发7-容器
Queue队列:主要就是为高并发而存在,有进有出。Deque双关队列:头和尾都可以存取BlockingQueue阻塞队列:PriorityQueue优先队列:按照顺序先入先出DelayQueue延迟队列:队列中的对象只有到期之后才能被取走HashTable,Vector一代同步容器,所有的方法均上锁,基本不用HashTable,HashMap,SynchroizedHashMap,...原创 2020-03-26 00:10:16 · 146 阅读 · 0 评论 -
多线程与高并发6-ThreadLocal+强软弱虚
ThreadLocal线程本地变量。线程拥有该线程独有的变量。set()。实际上是存储到的是(Thread.currentThread().map(ThreadLocal,data)) 当前线程的一个map中。所以只有当前线程可以获取,并且线程间相互隔离ThredLocalMap存储的是ThreadLocal,ThreadLocalMap的key是一个弱引用(gc自动清除),用于防止内存泄...原创 2020-03-25 20:24:36 · 183 阅读 · 0 评论 -
多线程与高并发5-AQS
AQS1、state和共同操作该state的双向链表。2、双向链表用于查看前一节点状态3、CAS+Volitile state(通过head获取当前状态,tail添加队列元素)4、state是volitile修饰的,设置state方法,有setState()和compareAndState()[unsafe];5、AQS主要方法:tryAcquire,tryRelease,tryAcq...原创 2020-03-25 16:25:52 · 129 阅读 · 0 评论 -
多线程与高并发4-线程之间通讯
synchronied(锁升级)volitileAtomicXXXX LongAdderJUC各种同步锁ReentrantLock(CAS)CountDownLatchCyclicBarrierReadWriteLock StampedLockSemaphoreExchangerLockSupport两个线程输出1A2B3C…static String[] words =...原创 2020-03-25 01:21:18 · 161 阅读 · 0 评论 -
多线程与高并发3-atomic分段锁+同步锁
LongAdderjuc.atomic包下,在很高并发情况下效率比AtomicLong效率要高原理:在底层是一个分段锁的设计,分成一个线程数组,将线程分别锁定在不同元素中,算出结果后加到一起。分段锁也是CAS。效率比较:sync<atomic,无锁乐观锁(sync在小数量小并发未必效率低,锁升级)atomic<LongAdder,分段锁ReetrantLock(底层为CAS...原创 2020-03-24 18:13:50 · 394 阅读 · 0 评论 -
多线程与高并发2-volitile,sync,cas
volitile可变的、易变的保证线程可见性、禁止指令重排。但不能保证原子性volitile应用场景Lazy DCL、Double Check Syncvolitile特性禁止指令重排CPU实现:lfence,sfence,mfence原语JVM实现SS,LL,SL,LS屏障Volitile实现:写操作只有写完之后才能进行读操作读操作只有读完之后才能进行写操作保证线程可见性...原创 2020-03-24 13:36:21 · 187 阅读 · 0 评论 -
多线程与高并发1-基础定义
进程和线程进程是操作系统能够分配的最小单位线程是操作系统能够调度的最小单位(一个程序的不同执行路径)启动线程的三种方式1.Thread 2.Runnable 3.Executorssleep和yieldsleep线程进行睡眠,让出CPU给其他线程继续运行。到规定的时间唤醒yield将当前线程回到等待队列中,返回到就绪状态,让出CPUjoin将并行执行转为串行执行ThreadSt...原创 2020-03-24 11:53:59 · 131 阅读 · 0 评论