有关stop和join函数

来源:8-7 实现任务处理线程池Pool

慕的地815252

2019-09-24

老师,线程池里面的stop()函数是设为了置停止标记位,那设置了之后会发生什么?线程是不是还在正常执行?只有join(thread类里面的,不是自己写的)才是真的结束。主要还是stop和join两个函数有点晕,不知道为什么要这样用?麻烦了

写回答

1回答

咚咚呛

2019-09-25

客气了。

同学应该比较少阅读一些框架的源码,对一些后台服务的启停不太熟悉,不过没关系,这里的实践可以帮助同学补充相关的知识。

这里的stop的操作是非常常见的一种操作。

stop操作把一个标志位置为True了,而这个标志位是在一个循环里面判断用到的,如果标志位不为True,那么将一直循环的执行任务,只要标志位True后,则退出循环。

这样做有什么好处呢?这样做可以避免让线程完成当前正在执行的任务再退出,因为只有一个任务完成了,才会回到循环的判断,进行下一个任务的处理。

而join是干嘛的呢?join方法是操作系统层面提供的API,它用于等待线程的执行完成,然后正常回收线程资源。只有stop之后,多个线程才可能退出循环,也才可能结束。

所以这里面我们可以知道,join,是为了线程正常结束,stop,是为了线程池服务的正常结束。

3
1
慕的地815252
非常感谢!
2019-09-25
共1条回复

(新版)计算机基础,计算机组成原理+操作系统+网络

编程之前先学这门课,系统补足计算机基础知识,夯实编程地基

7739 学习 · 1580 问题

查看课程