기본적인 구조는 다음과 같습니다.
큐를 만들어서 쓰레드(이미지를 서버에서 다운받는 작업)를 하나씩 담습니다.
FIFO 또는 LIFO 구조로 하나씩 꺼내서 해당 쓰레드를 처리합니다.
이렇게만 처리하게 될 경우 하나의 프로세스에서 동시에 처리가능한 쓰레드가 제한적이기 때문에
언젠가는 오류를 뿜으며 종료되게 되어있습니다. 그래서 동시 처리가능한 쓰레드에 제한을 두어야 하며,
큐에도 크기 제한을 걸어둡니다. 나중에 쓰레드를 삽입하려고 하는데 큐 사이즈가 다 차있으면 맨 처음에
들어와 있던 쓰레드는 그냥 삭제한다든지 등의 처리가 있어야 합니다.
위와 같은 내용은 Android Universal Image Loader 라는 오픈소스를 분석한 결과입니다..
https://github.com/nostra13/Android-Universal-Image-Loader
참고하셔서 직접 구현하신 내용에 적용해 보시면 좋을듯 합니다.