【android学习记录】ThreadPool线程池的使用
2018-02-26 16:23
357 查看
/** * Created by 123 on 2018/2/26. * * 线程池的使用 */ public class ThreadPool { /** * 线程池构造函数 * * @corePoolSize 线程池之中核心线程数量 * * @maximumPoolSize 线程池中最大线程数量 * * @keepAliveTime 非核心线程超过限制时间,会被回收; * 如果ThreadPoolExecutor的allowCoreThreadTimeOut属性设置为true, * 则该参数也表示核心线程的超时时长。 * * @unit 超时时长的单位 * * @workQueue 线程池中的队列,储存已经被提交但是尚未执行的任务; * 存储在这里的任务是由ThreadPoolExecutor的execute方法提交来的。 * * @threadFactory 为线程池提供新线程的功能,一般使用默认。 * * @handler 拒绝策略,当线程无法执行新任务时 * (一般是由于线程池中的线程数量已经达到最大数或者线程池关闭导致的), * 默认情况下,当线程池无法处理新线程时,会抛出一个RejectedExecutionException。 * * */ // public ThreadPoolExecutor(int corePoolSize, // int maximumPoolSize, // long keepAliveTime, // TimeUnit unit, // BlockingQueue<Runnable> workQueue, // ThreadFactory threadFactory, // RejectedExecutionHandler handler) /** * 新开一个线程之后的各种情况 * * 1.execute一个线程之后,如果线程池中的线程数未达到核心线程数,则会立马启用一个核心线程去执行 * 2.execute一个线程之后,如果线程池中的线程数已经达到核心线程数,且workQueue未满,则将新线程放入workQueue中等待执行 * 3.execute一个线程之后,如果线程池中的线程数已经达到核心线程数但未超过非核心线程数,且workQueue已满,则开启一个非核心线程来执行任务 * 4.execute一个线程之后,如果线程池中的线程数已经超过非核心线程数,则拒绝执行该任务 */ private ThreadPoolExecutor poolExecutor =new ThreadPoolExecutor( 3, 5, 1, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(128) ); private void test(){ Runnable runnable=new Runnable() { @Override public void run() { SystemClock.sleep(2000); } }; poolExecutor.execute(runnable); } /** * 参数配置参考 * * 核心线程数为手机CPU数量+1 * (cpu数量获取方式Runtime.getRuntime().availableProcessors()), * 最大线程数为手机CPU数量×2+1,线程队列的大小为128 * */ }
相关文章推荐
- 记录android应用程序使用的次数 android学习(五)
- 【转】Android使用嵌入式关系型SQLite数据库存储数据【学习记录】
- eclipse IDE/android开发 使用学习记录
- Android XML使用的学习记录
- Android基础学习之异步任务使用Thread(线程)
- Android学习记录(6)—将java中的多线程下载移植到Android中(即多线程下载在Android中的使用)③
- 【转】Android使用事务操作SQLite数据库【学习记录】
- android学习记录3(数据存储的方式:sqlite、sp、存文件。listview简单使用)
- Android Studio1.5使用和学习记录
- ANDROID 学习笔记(三) UI THREAD AsyncTask 使用
- Android学习记录(二十二)-Android WEBDAV MKCOL的使用
- android 学习记录—————Handler的使用
- Android学习记录(二)--第三方图片库Universal Image Loader的使用。
- android菜鸟学习记录之---字符串资源的使用
- Android XML使用的学习记录
- (记录学习android遇到的问题)使用被weight分配空间后的控件高度值画新控件出现的问题
- 天天记录 - Android invalidate学习使用的例子
- Android学习记录(6)—将java中的多线程下载移植到Android中(即多线程下载在Android中的使用)③
- 深入理解Android的消息处理系统---Handler、Looper、Thread学习记录
- Android 开发学习记录(3)---- httpclient使用(二)