话不多说,先上代码
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import java.util.LinkedList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
public class TaskDispatcher {
private LinkedList<Runnable> mTaskList; // 任务队列
private ExecutorService mThreadPool; // 线程池
private Thread mPollingThead; // 轮询线程
private Handler mPollingHanler; // 轮询线程中的Handler
private static int mThreadCount = 3; // 线程池的线程数量,默认为3
private Type mType = Type.LIFO; // 队列的调度方式,默认为LIFO
private volatile Semaphore mPollingSemaphore; // 信号量,由于线程池内部也有一个阻塞线程,若加入任务的速度过快,LIFO效果不明显
private volatile Semaphore mSemaphore = new Semaphore(0); //信号量,防止mPoolThreadHander未初始化完成
private static TaskDispa