package com.mm.android.deviceaddmodule.mobilecommon.AppConsume; import android.os.Process; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.ThreadFactory; public class ThreadPool { private volatile static ExecutorService cachedThreadPool; // 提交线程 public static Future submit(Runnable mRunnable) { if (cachedThreadPool == null) { synchronized (ExecutorService.class) { if (cachedThreadPool == null) { cachedThreadPool = Executors.newFixedThreadPool(Runtime .getRuntime().availableProcessors() * 2,new DefaultFactory()); } } } return cachedThreadPool.submit(mRunnable); } // 关闭 public static void shutdown() { if (cachedThreadPool != null && !cachedThreadPool.isShutdown()) cachedThreadPool.shutdown(); cachedThreadPool = null; } static class DefaultFactory implements ThreadFactory { @Override public Thread newThread(Runnable r) { Thread thread = new Thread(new FactoryRunnable(r)); return thread; } } static class FactoryRunnable implements Runnable { Runnable runnable; public FactoryRunnable(Runnable runnable) { this.runnable = runnable; } @Override public void run() { Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); runnable.run(); } } }