协程入门:挂起与取消

协程的挂起与线程的休眠

协程通过delay(timeMillis)实现挂起,线程通过sleep(timeMillis)实现休眠。但是挂起和休眠存着差异性

协程挂起与线程休眠

相同点:

1.都能达到堵塞的目的;

2.在该状态下(挂起/休眠)都能被终止执行(取消/中断);

3.取消/中断时都会抛出异常

不同点:

1.线程休眠会直接堵塞当前线程,该线程无法再执行其它操作,但是协程挂起不会堵塞当前线程,线程上的其它协程可以继续运行;

2.delay操作只能在协程环境使用,sleep在协程环境和普通线程环境都可使用

3.线程中断抛出的是InterruptedException异常,协程中断抛出的是CancellationException异常

协程的取消与线程的中断

协程的取消与线程的中断,2者十分类似 :

比较 调用api 能被直接取消的状态 事务处理时 抛出的异常
协程 cancel() delay 无法被直接取消 CancellationException
线程 interrupt() sleep 无法被直接取消 InterruptedException

相同点:

1.都是需要处于挂起/休眠状态,才能够直接取消/中断;

2.处于事务处理时,无法直接被取消/中断;

不同点在于:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值