java AQS学习笔记

在这里插入图片描述

负载: 所谓CPU负载指的是一段时间内任务队列的长度,通俗的讲,就是一段时间内一共有多少任务在使用或等待使用CPU;

线程池分类:

FixThreadExecutor: 场景是要限制当前线程的数量,适用于负载比较重的服务器;

SingleThreadExecutor:  保证顺序的执行各个任务;

CacheThreadExecutor: 适合负载较轻的服务器, 适合短期异步的小程序;

实现RejectedExecutionHandler接口,自定义拒绝策略;

任务队列:

ArrayBlockingQueue: 有界队列

LinkedBlockingQueue: 无界队列

SynchronousQueue:  一般最大线程数为最大值,避免执行拒绝策略;

PriorityBlockingQueue: 

任务特性:

任务的特性: IO密集型(2*CPU) 计算密集型(CPU+1)  混合型(可以考虑分开)

任务优先级: 高,中,低 (考虑优先级队列)

任务执行时间: 长 中 短 ()

任务依赖性: 是否依赖其它系统资源 ()

java AQS:

aqs常用设计模式:

模板模式

策略模式

独占锁: 

ReentrantLock

默认是非公平锁,可重入锁;

CountDownLatch

共享锁

Semaphore

共享锁

自旋锁, 不断循环获取锁,直到获取锁为止

减少上下文切换思路:

无锁并发编程: TDDL生成主键id

CAS: 乐观锁

使用最少线程:  线程池核心线程数,最大线程数,等待队列就是这个原因; 

synchronized和lock对比:

参考:

什么是服务器负载 - 知乎

java并发系列三(深入理解AQS和CAS)_lc138544的博客-CSDN博客_aqs和cas

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值