/**
* 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 线程池使用
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java 线程池 ThreadPoolExecutor
记录线程池的使用
线程池 java ide -
【Android 异步操作】线程池 ( 线程池 reject 拒绝任务 | 线程池 addWorker 添加任务 )
一、线程池 reject 拒绝任务、二、线程池 addWorker 添加任务
线程池 reject addWorker 构造函数 任务队列 -
android线程池大小 android 线程池使用
为了利用线程池中的线程来执行任务,我们需要将要执行的任务添加到线程池所维护的任务队列中。当线程池中的某个线程可用时,ThreadPoolExecutor就会从任务队列中取出一个任务交给该线程来执行。同时,当我们启动了一个任务后随后发现该任务不再需要时,我们还可以通过取消线程来停止线程池中的线程正在运行的任务。任务交由线程池中的线程来执行 通过将一个任务Runnable对象传递给ThreadPool
android线程池大小 Android Multiple Threads ThreadPoolExecutor 线程池