《Android线程池简介和基本应用》

PriorityThreadFactory.java

import java.util.concurrent.ThreadFactory;class PriorityThreadFactory implements ThreadFactory {    private final int mThreadPriority;    public PriorityThreadFactory(int threadPriority) {        mThreadPriority = threadPriority;    }    @Override    public Thread newThread(final Runnable runnable) {        Runnable wrapperRunnable = new Runnable() {            @Override            public void run() {                try {                    android.os.Process.setThreadPriority(mThreadPriority);                } catch (Throwable t) {                }                runnable.run();            }        };        return new Thread(wrapperRunnable);    }}

MainThreadExecutor.java

import android.os.Handler;import android.os.Looper;import java.util.concurrent.Executor;class MainThreadExecutor implements Executor {    private final Handler handler = new Handler(Looper.getMainLooper());    @Override    public void execute(Runnable runnable) {        handler.post(runnable);    }}

DefaultExecutorSupplier.java

import java.util.concurrent.Executor;import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.ThreadFactory;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class DefaultExecutorSupplier {    public static final int NUMBER_OF_CORES = Runtime.getRuntime().availableProcessors();    private final ThreadPoolExecutor mForBackgroundTasks;    private final ThreadPoolExecutor mForLightWeightBackgroundTasks;    private final Executor mMainThreadExecutor;    private static DefaultExecutorSupplier sInstance;    public static DefaultExecutorSupplier getInstance() {        if (sInstance == null) {            synchronized (DefaultExecutorSupplier.class) {                sInstance = new DefaultExecutorSupplier();            }        }        return sInstance;    }    private DefaultExecutorSupplier() {        ThreadFactory backgroundPriorityThreadFactory = new PriorityThreadFactory(android.os.Process.THREAD_PRIORITY_BACKGROUND);        mForBackgroundTasks = new ThreadPoolExecutor(                NUMBER_OF_CORES * 2,                NUMBER_OF_CORES * 2,                60L,                TimeUnit.SECONDS,                new LinkedBlockingQueue<Runnable>(),                backgroundPriorityThreadFactory        );        mForLightWeightBackgroundTasks = new ThreadPoolExecutor(                NUMBER_OF_CORES * 2,                NUMBER_OF_CORES * 2,                60L,                TimeUnit.SECONDS,                new LinkedBlockingQueue<Runnable>(),                backgroundPriorityThreadFactory        );        mMainThreadExecutor = new MainThreadExecutor();    }    public ThreadPoolExecutor forBackgroundTasks() {        return mForBackgroundTasks;    }    public ThreadPoolExecutor forLightWeightBackgroundTasks() {        return mForLightWeightBackgroundTasks;    }    public Executor forMainThreadTasks() {        return mMainThreadExecutor;    }    //demo    public void doSomeBackgroundWork() {        DefaultExecutorSupplier.getInstance().forBackgroundTasks()                .execute(new Runnable() {                    @Override                    public void run() {                        // do some background work here.                    }                });    }    //demo    public void doSomeLightWeightBackgroundWork() {        DefaultExecutorSupplier.getInstance().forLightWeightBackgroundTasks()                .execute(new Runnable() {                    @Override                    public void run() {                        // do some light-weight background work here.                    }                });    }    //demo    public void doSomeMainThreadWork() {        DefaultExecutorSupplier.getInstance().forMainThreadTasks()                .execute(new Runnable() {                    @Override                    public void run() {                        // do some Main Thread work here.                    }                });    }}

更多相关文章

  1. Android(安卓)中的 Looper 对象
  2. Android(安卓)监控应用删除,并提示处理
  3. Android中对后台任务线程性能的说明及优化
  4. Android(安卓)studio 简单的多线程
  5. Android(安卓)为线程增加Looper
  6. Android(安卓)线程池管理工具类
  7. android 线程超时的例子
  8. Android(安卓)ProgressDialog
  9. Android(安卓)显示/隐藏 应用图标

随机推荐

  1. AutoCompleteTextView 设置了点击事件需
  2. 导航架构组件 - 具有CollapsingToolbar的
  3. android中判断一个点是否在一个封闭Path
  4. 如何在Python中将Google帐户身份验证添加
  5. Google Play服务API(位置服务)是否需要数据
  6. android自定义通知,android自定义Notifica
  7. Android_单元测试_依赖注入_入门
  8. 使用drawables的IntelliJ Android缓存构
  9. Android超级common的Adapter,也就是传说的
  10. Android(Java)简单发送和接收服务器 - 快速