说说 在项目实践中经常会遇到一个场景, 就是需 要等待某几件事情完成后才能继续往下执 行, 比如多个线程加载资源, 需要等待多 个线程全部加载完毕再汇总处理,或者顺序执行某些线程。
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资源,仍然是就绪状态,调度器下次执行调度线程时就有可能调度到当前线程
【线程中的 join方法和yeild方法区别】
最新推荐文章于 2023-07-06 09:12:38 发布