有关stop和join函数
来源:8-7 实现任务处理线程池Pool

慕的地815252
2019-09-24
老师,线程池里面的stop()函数是设为了置停止标记位,那设置了之后会发生什么?线程是不是还在正常执行?只有join(thread类里面的,不是自己写的)才是真的结束。主要还是stop和join两个函数有点晕,不知道为什么要这样用?麻烦了
写回答
1回答
-
客气了。
同学应该比较少阅读一些框架的源码,对一些后台服务的启停不太熟悉,不过没关系,这里的实践可以帮助同学补充相关的知识。
这里的stop的操作是非常常见的一种操作。
stop操作把一个标志位置为True了,而这个标志位是在一个循环里面判断用到的,如果标志位不为True,那么将一直循环的执行任务,只要标志位True后,则退出循环。
这样做有什么好处呢?这样做可以避免让线程完成当前正在执行的任务再退出,因为只有一个任务完成了,才会回到循环的判断,进行下一个任务的处理。
而join是干嘛的呢?join方法是操作系统层面提供的API,它用于等待线程的执行完成,然后正常回收线程资源。只有stop之后,多个线程才可能退出循环,也才可能结束。
所以这里面我们可以知道,join,是为了线程正常结束,stop,是为了线程池服务的正常结束。
312019-09-25
相似问题