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