【线程中的 join方法和yeild方法区别】

21 篇文章 1 订阅
7 篇文章 0 订阅

说说 在项目实践中经常会遇到一个场景, 就是需 要等待某几件事情完成后才能继续往下执 行, 比如多个线程加载资源, 需要等待多 个线程全部加载完毕再汇总处理,或者顺序执行某些线程。
1Thread 类中有一个join 方法就可以做这个事情, j oin方法是Thread 类直接提供的。join 是无 参且返回值为void 的方法。
2 Thread 类中有一个静态的yield 方法, 当一个线程调用yield 方法时, 实际就是在暗示线程调度器当前 线程请求让出自己的CPU 使用。 我们知道操作系统是为每个线程分配一个时间片来占有CPU 的, 正常 情况下当一个线度, 而当一 个分配给自己的时间片使用完后, 线程调度器才会进行下一轮的线程调用
线程调用了Thread 类的静态方法yield 时, 是在告诉线程调度器自己占有的时间片中还没有使用完的部 分自己不想使用了, 这暗示线程调度器现在就可以进行下一轮的线程调度。 当一个线程调用y i eld 方法时, 当前线程会让出CPU 使用权, 然后处于就绪状态, 线程调度器会从线 程就绪队列里面获取一个线程优先级最高的线程, 当然也有可能会调度到刚刚让出CPU 的那个线程来 获取CPU 执行权。
3yield方法与sleep方法区别
sleep方法是线程进入阻塞,线程挂起一定时间,在这期间线程调度器不会唤醒改线程,
yield方法是让出CPU资源,仍然是就绪状态,调度器下次执行调度线程时就有可能调度到当前线程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值