课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
线程池是程序员在学习软件开发的时候需要重点掌握的一个编程技术,下面我们就通过案例分析来了解一下,Android编程线程池的用法。
1、预置线程池
代码参考AndroidAPI29
ThreadPoolExecutor提供了很多参数,方便开发者调控。线程池的设计者建议开发者使用以下几个工厂方法,Android中主要有5种
newCachedThreadPool()不限制数量的线程池,能自动回收线程
newFixedThreadPool(intnThreads)固定数量的线程池
newSingleThreadExecutor()单一的子线程
newScheduledThreadPool(intcorePoolSize)能执行延时任务或者周期性任务
newWorkStealingPool()工作窃取线程池
2、可缓存线程池
用Executors.newCachedThreadPool获得一个可缓存线程池对象,然后让它执行任务。
可缓存线程池会在需要的时候创建新的子线程。当原有的线程可用的时候,会复用现有线程。
这个机制适用于执行多个短期异步任务。任务比较小,但是数量大。
调用execute方法会先尝试复用已有的可用线程。如果当前没有线程,会新建一个线程并把它添加到池里。
超过60秒没有使用的线程会被停止并移除。因此即便长时间不用这个线程池,也不会造成多大的开销。
3、定长线程池
如果当前所有线程都在忙,又有新的任务添加进来。那么任务会在队列中等待,直到有可用的线程来处理任务。
如果有的线程遇到错误而停止了,要执行任务的话,会创建新的线程补上位置。
池里的线程会一直存活,直到线程池停止(ExecutorServiceshutdown)。
4、周期任务
主要涉及到2个方法scheduleAtFixedRate和scheduleWithFixedDelay。
假设任务时间小于周期时间,则按给定周期时间来进行。这两个方法表现一致。
假设任务执行时间大于周期时间,这两个方法有点不同
scheduleAtFixedRate执行完上一个任务后,用时超过了周期时间,会立刻执行下一个任务。
scheduleWithFixedDelay在上一个任务执行完毕后,还会等待周期时间,再去执行下一个任务。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。