package com.hdl.sdk.link.common.utils; import android.os.Handler; import android.os.Looper; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; /** * Created by Tong on 2021/9/15. */ public class ThreadToolUtils { private final Handler uiHandler = new Handler(Looper.getMainLooper()); //cpu 最大线程容纳量 private final int coreSize = Runtime.getRuntime().availableProcessors() + 1; private ThreadToolUtils() { } private static class SingletonInstance { private static final ThreadToolUtils INSTANCE = new ThreadToolUtils(); } public static ThreadToolUtils getInstance() { return SingletonInstance.INSTANCE; } /** * 线程数量固定的线程池 */ public ExecutorService newFixedThreadPool(int size) { if (size == 0 || coreSize < size) { return Executors.newFixedThreadPool(coreSize); } return Executors.newFixedThreadPool(size); } /** * 定时任务线程池 */ public ScheduledExecutorService newScheduledThreadPool(int size) { if (size == 0 || coreSize < size) { return Executors.newScheduledThreadPool(coreSize); } return Executors.newScheduledThreadPool(size); } /** * 单一线程 */ public ExecutorService newSingleThreadPool() { return Executors.newSingleThreadExecutor(); } public ExecutorService newCachedThreadPool() { return Executors.newCachedThreadPool(); } /** * 切换回主线程 */ public void runOnUiThread(Runnable run) { uiHandler.post(run); } }