并发基本概念

进程&线程&协程

两种方法创建线程

Thread、Runable

Callable+Future(FutureTask)

线程启动

start():开启自定义线程,自定义线程实例调用native方法启动jvm线程,只能执行一次

run():执行业务代码,可重复执行,如果run之前不执行start业务代码将会使用主线程

线程终止

线程代码执行完成、线程执行代码异常

stop()、suspend()、resume() - 线程终止但不释放资源

合理:interrupt()设置线程中断标识位,使用线程的代码判断并结束任务

sleep()中断异常:InterruptException可唤醒

上下文切换 5000~20000时钟周期

只有等待synchronized 内置锁的线程为阻塞

ReentrantLock 类可重入锁为等待或超时等待状态·

线程调度

协同式线程调度

抢占式线程调度 - java抢占式

内核线程实现 1:1 - jvm hotspot 使用操作系统原生线程及调度

用户线程实现 1:N

混合线程实现 N:M

协程(用户线程)- 纤程Fiber(JDK19虚拟线程)

守护线程:支持型&调度工作(资源回收与调度、GC、支持工作线程)

join()方法:把指定线程加入到当前线程,直到加入线程执行完再执行当前线程(解决线程乱序执行)

锁-有序、可见、原子

synchornized内置锁:类、方法、同步代码块 - 加锁对象为同一个才生效(保证了可见性)

对象锁 - 类的对象实例的成员变量或方法

类锁 - 类或类成员变量上

volatile:最轻量的通信/同步机制(不是锁),保证线程与线程之间的变量同步(适用一个线程写,多个线程读)

等待&通知机制

wait() - 加锁(同步块中)

notify() - 加锁(同步块中),随机唤醒一个线程

notifyAll() - 加锁(同步块中),唤醒所有wait线程

CompleteableFuture - 实现任务编排

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值