我使用ThreadPoolExecutor从Internet加载了大量图像。
当找到新图像时,我需要先渲染它,在这种情况下,我想放弃仍在ThreadPoolExecutor中排队的旧任务,并添加这些新项目进行下载。
我发现ThreadPoolExecutor中没有“清除队列”方法,而“清除”方法听起来对此不好。
我该怎么办?
我只是想调用此执行器的“shutdown”并重新创建一个新的执行器,不确定它是否合适。
答案 0 :(得分:7)
你试过这个吗?
ThreadPoolExecutor pool = .....; pool.remove(task);
任务是您要删除的Runnable。
或者如果你想清除队列。
pool.getQueue().clear()
答案 1 :(得分:4)
ThreadPoolExecutor
有remove()
方法。您可以将其与getQueue()
结合使用,也可以保留自己已排队且可能需要删除的Runnable
集合。如果你保留自己的收藏品,请记得有一些机械设备在完成后从你的收藏品中移除它。