java-ThreadPool中任务的自定义顺序

我目前使用FixedThreadPool从Web下载图像,如下所示:

ExecutorService mThreadPool = Executors.newFixedThreadPool(MAX_THREADS);

然后,我只提交带有图像URL的新Runnables,它要么从URL下载图像,要么如果它存在于缓存中,则从那里加载它.

我希望能够确保一次只有一个线程可以处理特定的URL(以防止图像被下载MAX_THREADS次的情况),并且如果该线程线程完成并下载了该图像,我想允许下一个(或全部)相同的网址)运行,以从我的缓存加载以前下载的图像.

这是我在简单(希望如此)方案中显示的意思:http://i43.tinypic.com/xnz3f9.jpg

我看到了一些带有Queue任务的Runnable的自定义实现的示例,但是所有这些示例都需要在执行这些任务之前知道所有URL,我想在具有动态加载内容的ListView中使用它,这样就不可能使用该选项.

谢谢你的帮助.

上一篇:C#-Parallel.ForEach比预期花费更多时间


下一篇:c# – async / await如何帮助ASP.Net应用程序?