美文网首页
第11章 Android的线程和线程池

第11章 Android的线程和线程池

作者: 貌似还没想好叫什么 | 来源:发表于2018-02-22 20:24 被阅读0次

1.主线程和子线程

11.2Android中的线程形态

11.2.1 AsyncTask

AsyncTask 是一个抽象的泛型类,他提供了Params,Progress和Result三个泛型参数
Async提供了4个核心方法
1.onPreExecute() 2.doInbackGround() 3.onProgressUpdate() 4.onPostExecute

11.2.2AsyncTask的工作原理

11.2.3 HandlerThread

HandlerThread继承了Thread,他是一个可以使用handler的Thread
在run方法中通过Looper.prepare()来创建消息队列,并通过Looper.loop()来开启消息循环。这就在实际实际使用中允许在handlerThread中创建handler。

11.2.4IntentService intentService是一种特殊的Service,它继承了Service并且他是一个抽象类,所以必须创建它的子类才能使用IntentService。IntentService可用于执行后台耗时的任务,当任务执行后他自动停止。在实现上IntentService封装了handlerThread和handler

当intentService被第一次启动时,他的increase方法会被调用,onCreate方法会创建一个handlerThread,然后使用它的Looper来构造一个Handler对象mServiceHandler,这样通过mServicehandler发送的消息最终都会在HandlerThread中执行,从这个角度来说,IntentService也可以用于执行后台任务。每次启动intentService,它的onStartCommend方法就会调用一次。IntentService仅仅是通过mServiceHandler发送一个消息,这个消息在handlerThread中被处理。mServiceHandler收到消息后,会将Intent对象传递给OnhandlerIntent方法去处理

11.3 Android中的线程池

好处
1.重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销
2.能有效控制线程池中的最大并发数,避免大量的线程之间因为互相抢占系统资源而导致的阻塞现象
3.能够对线程进行简单的管理,并提供定时执行以及制定间隔循环执行等功能

11.3.1 ThreadPoolExecutor

threadPoolExecutor是线程池真正实现,他的构造方法提供了一系列参数来配置线程池

public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory)

corePoolSize 线程的核心线程数
maximumPoolSize 线程池所能容纳的最大线程数
keepAliveTime 非核心线程闲置时的超时时长
unit 用来是定keepAliveTime参数的时间单位
workQueue 线程池中的任务队列
threadFactory 线程工厂,为线程池提供新线程的功能

11.3.2线程池分类

1.FixedThreadPool 线程数量固定的线程池,当线程处于空闲状态时,他们并不会被回收
2.CachedThreadPool 他是一种线程数量不定的线程池,他只有非核心线程,最大线程数量是Integer.MAX_VALUE
3.ScheduledThreadPool 他的核心线程数量是固定的,而非核心线程数是没有限制的。并且当非非核心线程闲置时会被立刻回收。ScheduledThreadPool这类线程池主要用于执行定时任务和具有固定周期的重复任务
4.singleThreadExecutor 内部只有一个核心线程,他确保所有的任务都在用一个线程中按顺序执行。

相关文章

  • Android线程池的使用

    一、线程与线程池,为什么要使用线程池 1、Android中的线程 在Android中有主线程和子线程的区分。主线程...

  • Android的线程和线程池

    Android的线程和线程池 标签(空格分隔): android 一些概念: 线程分类:主线程和子线程,主线程主要...

  • 笔记:Android线程和线程池

    Android线程和线程池 Android中的线程操作相关的类有 AsyncTask IntentService ...

  • 线程池创建和相关知识

    线程池创建(单例):Android线程池得要这么用 - 简书 线程池相关知识:Android开发之线程池使用总结 ...

  • Android面试之线程和线程池

    Android中的线程形态 AsyncTask底层用到了线程池。AsyncTask封装了线程池和Handler,它...

  • <> Chapter 11

    Android的线程和线程池 主线程和子线程 Android中的主线程也叫UI线程,主要作用是运行四大组件以及处理...

  • Android 的线程和线程池

    Android 的线程分为主线程和子线程。 主线程更新 UI 子线程执行耗时操作 AsyncTask封装了线程池和...

  • 线程池

    话题:线程池Android中的线程池有哪些?它们的区别是什么?为什么要使用线程池? 线程是Android里面一个很...

  • 要点提炼|开发艺术之线程

    本篇的主要内容是Android的线程和线程池: 概述 线程形态AsyncTaskHandlerThreadInte...

  • Android 开发艺术探索读书笔记 11 -- Android

    本篇文章主要介绍以下几个知识点:主线程和子线程Android 中的线程形态Android 中的线程池 11.1 主...

网友评论

      本文标题:第11章 Android的线程和线程池

      本文链接:https://www.haomeiwen.com/subject/ogwztftx.html