ThreadUtil工具类

xiaoxiao2021-02-28  78

ThreadUtil工具类

public class ThreadUtil{ private static ThreadUtil _insatnce; private static final byte[] wirteLock = new byte[0]; private ThreadPoolExecutor _pool; private HashMap<String,Thread> threads = new HashMap<>(); public interface Task{ void doTask(){} } public void init(){get_pool();} public void startThread(final String key , final Task mTask){ Thread mThread = new Thread(new Runnable(){ @override void run(){ mTask.doTask(); } }) threads.put(key,mThread); mThread.start(); } public void finishThread(final String key){ Thread mThread = threads.get(key); mThread.interrput(); threads.remove(key); } public void startThreadInPool(final Task mTask){ if(_pool != null && !_pool.isTerminated()){ _pool.submit(new Runnable(){ }); } } public bool isMainThread(){ return Looper.myLooper() == Looper.getMainLooper(); } private ThreadUtil(){} public ThreadUtil getInstance(){ synchronized(wirteLock){ if( _instance == null ){ _instance = new ThreadUtil(); } } return _instance; } public ThreadPoolExecutor get_pool(){ synchronized(wirteLock){ if(_pool == null || _pool.isTerminated){ _pool = new ThreadPoolExecutor(10,50,3,TimeUnit.MINUTES,new ArrayBlockingQueue<Runnable>(20),new RejectedExecutionHandler(){ @Override rejectedExecution(...){ handler.postDelayed(new Runnable(){ void run(){if(!threadPoolexecutor.isShutdown){ threadPoolexecutor.execute(runnable); }} }); } }); } } } }
转载请注明原文地址: https://www.6miu.com/read-84153.html

最新回复(0)