
并发编程
shaowei6969
这个作者很懒,什么都没留下…
展开
-
线程池框架执行流程和原理分析
线程池工具类: 单例线程池 定长线程池 延时线程池 周期执行线程池 大体执行流程 如果达到核心线程数,则会把任务加入到队列里面, 直到队列创建满了, 如果还有任新的任务进来, 那么就会创建临时线程, 来处理当前任务, 当创建临时线程和核心线程达到最大线程数时, 就会走饱和策略,而饱和策略有四种 默认是直接抛异常 第二种由提交任务的线程来执行当前的任务 第三种是将队列里的丢弃阻塞队列中靠最前的任务,并执行当前任务 第四重是直接抛弃当前任务 详细执行流程: 当传进来一个任务时 执行addWorker()方法原创 2020-09-12 00:39:15 · 144 阅读 · 0 评论 -
JVM对synchronized的优化
在JDK1.6之后JVM对synchronized底层进行了优化,提高了并发访问性能得到提升: 第一点:锁的膨胀升级过程是最大的优化 第二点:锁的粗化 第三点:锁的消除 锁的膨胀升级过程: 无锁–》偏向锁–》轻量级锁–》重量级锁(互斥锁) 锁优化后一共有四种状态,无锁、偏向锁、轻量级锁、重量级锁。一开始从new出来的对象没有线程使用和加锁是无锁状态,然后随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级的重 量级锁,但是锁的升级是单向的,也就是说只能从低到高升级,不会出现锁的降级 偏向锁: 偏向锁是Jav原创 2020-08-16 10:36:54 · 468 阅读 · 0 评论