package com.wm.remusic.net;
import com.wm.remusic.json.MusicDetailInfo;
import java.util.ArrayList;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* Created by wm on 2016/6/29.
*/
public class RequestThreadPool {
private static RequestThreadPool mInstance;
private ThreadPoolExecutor mThreadPoolExec;
private static int MAX_POOL_SIZE;
private static final int KEEP_ALIVE = 10;
BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>();
public static synchronized void post(Runnable runnable) {
if (mInstance == null) {
mInstance = new RequestThreadPool();
}
mInstance.mThreadPoolExec.execute(runnable);
}
private RequestThreadPool() {
int coreNum = Runtime.getRuntime().availableProcessors();
MAX_POOL_SIZE = coreNum * 2;
mThreadPoolExec = new ThreadPoolExecutor(
coreNum,
MAX_POOL_SIZE,
KEEP_ALIVE,
TimeUnit.SECONDS,
workQueue);
}
public static boolean isTerminated(){
return mInstance.mThreadPoolExec.isTerminated();
}
public static void finish() {
if(mInstance != null){
mInstance.mThreadPoolExec.shutdownNow();
mInstance.mThreadPoolExec.purge();
mInstance.mThreadPoolExec = null;
mInstance = null;
}
}
}