相信大家做程序遇到比较多的就是队列,排队问题。对于app上这种问题比较多,比如排队下载,排队发送,并发排队网络请求等等。
要如何自己做好一个这样的功能呢。
下面我给大家将一下我对这一块的理解。
首先在android上,用java编写的程序,需要了解一下队列Queue数据结构(如果有特别的兴趣的可以百度一下,资料很多,我就不粘贴了)。
这次我们主要用的是PriortyBlockingQueue,大家可以理解成一个有优先级排序的阻塞队列排队,注意是可以阻塞的。
具体的PriortyBlockingQueue内部实现是堆,有兴趣的也可以去详细查一下资料。
多的就不说了,很多资料大家都能找到,下面直接看实现代码。
TaskManager.class
public class TaskManager {
private PriorityBlockingQueue<Task> mQueue;
private TaskDispatcher[] mTaskDispatchers;
private volatile static TaskManager ourInstance;
private final static int MAX_POOL_SIZE = 3;
private AtomicInteger mSequenceGenerator = new AtomicInteger();
private TaskManager() {
mTaskDispatchers = new TaskDispatchers[MAX_POOL_SIZE];
startTask();