关于 pool.close

来源:2-6 线程的调度和优化

浪淘沙98

2019-09-04 14:49:40

pool.close,这里的close 啥意思?

干嘛的?为什么要用到?

没有close会怎样?

写回答

1回答

好帮手乔木

2019-09-04

同学你好:

close():关闭线程池。

关闭指的是不再接收其他线程的任务,当前的所有线程任务执行完毕之后,该线程池则完全关闭。

原因:如果所有的任务完成,不关闭线程池,势必会造成资源(开启线程池占用内存和cpu)的浪费。

如果join()在close()之前:主线程的阻塞会让线程池任务还有任务需要执行,所以pool的状态是未关闭。

http://img.mukewang.com/climg/5d6f6ca10001fbf911060685.jpg

不关闭线程池:不关闭线程池,那么线程池状态没有关闭。会raise(弹出)异常。

http://img.mukewang.com/climg/5d6f6e5300011a9110890693.jpg

close代码:

http://img.mukewang.com/climg/5d6f6f0000013bca06030163.jpg

说的是把状态改为不可再插入元素的状态,完全关闭进程池使用。

join代码:

http://img.mukewang.com/climg/5d6f6f9200014cbd05230286.jpg

如果状态依旧为RUN,那么会raise(弹出)异常(Pool is still running)。

如果我解决了同学的题,请采纳!学习愉快^_^。

1

0 学习 · 8160 问题

查看课程

相似问题