我有ThreadPoolExecutor
来完成我的DownloadTask implements Runnable{private String taskId...
任务,我需要有时间从ThreadPoolExecutor
队列中获取定义任务,例如,使用任务ID :
mDownloadTasksPool.getQueue();
访问队列和获取定义元素的最佳方法是什么?
可以有一个包含所有重复任务的列表,但它看起来不是很优雅。
答案 0 :(得分:1)
对Runnables进行子类化以为taskID提供getter(如果这是您的密钥)。创建并发映射,将taskID映射到放入队列的Runnable。将您的ThreadPoolExecutor子类化。在beforeExecute中,您从该映射中删除当前任务,因为它不再在队列中。您可能希望将Runnable强制转换为自定义类以使用该taskID getter。