JUC

Sleep 抱锁休眠
TimeUnit juc 休眠工具类 TimeUnit.SECONDS.sleep();

Synchronized java 关键字 ,自动释放,细腻度低,会发生死锁
wait 释放锁等待 notify唤醒

Lock 接口,手动释放,细腻度高,自行处理锁问题
Condition 监视器
await 释放锁等待
signal 唤醒
ReentrantLook 可重入锁 look的一种实现。
ReentrantReadWriteLock 读写分离锁 。
CountDownLatch 多线程工具类 计数器减 初始化线程数 可等待数量减到0。
CyclicBarrier 多线程工具类 计数器加 可等待数量增加到指定数量。
Semaphore acquire() release()多线程工具类 限流 同时存在最大并发线程数。

阻塞队列 BlockingQueue
BlockingQueue 4组api

同步队列SynchronousQueue :只会有一个在线程在执行其他等待。

池化技术 3个方法 Executor:本质都是ThreadPoolExecutor ,明确规定不能使用,需要手动创建,会发生内存溢出。

ThreadPoolExecutor 7大参数 4个拒绝策略

最大线程数设置:
CPU型 : 根据电脑核数设置
IO型:根据最大占用内存数*2

只有一个方法的接口叫函数式接口
Function函数式接口,Predicate断定型接口,Consumer消费型接口,Supplier生产型接口

Stream 流式计算

ForkJoin :分支合并,线程递归最后合并。

异步回调:

JMM(java memory model):java 内存模型 ,并不实际存在。当工作内存获取主内存中的值时的操作约定。
加锁look解锁unlook
读取read加载load
使用use归于assign
存储store写入wirte

volatile :java关键字,保证线程可以见型,不保证原则性。禁止指令重排(涉及内存屏障,在执行代码时在上下文中增加屏障,保证不发生重排)。
实现原子操作 AtomicReference

指令重排:计算机底层执行会发生执行顺序重新排序,会保证运行,但不保证正确)
在这里插入图片描述

单例(保证程序中只有一个类实例)

cas compareandswap (比较替换):期望值,内存值,新值。当期望值与内存值相等时,替换成新值。

aba (狸猫换太子):b不知道a修改过值。
解决方法 带版本号 version

可重入锁 (递归锁):在本身持有锁时还能再次获取本身锁。

自旋锁(乐观锁):循环直到获取锁

死锁排除(jps,jstack)

读写锁 : 写独占,读共享。

AQS:AbstractQueueSynchronizer抽象队列同步
CountDownLatch,Sammphore,ReentrantLock,ReentrantReadWriteLock等等都是基于AQS实现

  1. state(用于计数器)
  2. 线程标记(哪一个线程加的锁)
  3. 阻塞队列(用于存放阻塞线程)
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值