Android 线程工具类(已封装)
aosp/packages/SettingsLib/src/com/android/settingslib/utils/ThreadUtils.java
线程处理类 import android.os.Handler; import android.os.Looper; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class ThreadUtils { private static volatile Thread sMainThread; private static volatile Handler sMainThreadHandler; private static volatile ExecutorService sThreadExecutor; /** * Returns true if the current thread is the UI thread. */ public static boolean isMainThread() { if (sMainThread == null) { sMainThread = Looper.getMainLooper().getThread(); } return Thread.currentThread() == sMainThread; } /** * Returns a shared UI thread handler. */ public static Handler getUiThreadHandler() { if (sMainThreadHandler == null) { sMainThreadHandler = new Handler(Looper.getMainLooper()); } return sMainThreadHandler; } /** * Checks that the current thread is the UI thread. Otherwise throws an exception. */ public static void ensureMainThread() { if (!isMainThread()) { throw new RuntimeException("Must be called on the UI thread"); } } /** * Posts runnable in background using shared background thread pool. * * @Return A future of the task that can be monitored for updates or cancelled. */ public static Future postOnBackgroundThread(Runnable runnable) { return getThreadExecutor().submit(runnable); } /** * Posts callable in background using shared background thread pool. * * @Return A future of the task that can be monitored for updates or cancelled. */ public static Future postOnBackgroundThread(Callable callable) { return getThreadExecutor().submit(callable); } /** * Posts the runnable on the main thread. */ public static void postOnMainThread(Runnable runnable) { getUiThreadHandler().post(runnable); } private static synchronized ExecutorService getThreadExecutor() { if (sThreadExecutor == null) { sThreadExecutor = Executors.newFixedThreadPool( Runtime.getRuntime().availableProcessors()); } return sThreadExecutor; } }
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论