Android的多线程了解多少
线程可能大家都不陌生,经常在面试的过程中,被人问到线程的知识,大家都会回答一二。但是当问题不是以具体到“线程的创建”,“线程的使用”,“线程的优缺点”时,我们又能对多线程说出自己多少的了解呢!
1. 多线程的介绍
1.1 定义
多线程顾名思义就是开辟多个线程进行工作,换而言之多个任务“同时”进行。
“同时”,这个主要归咎于JVM虚拟机快速调度来轮换线程,使得多个线程能够轮流快速的执行,从而给我们一种同时进行的错觉。
1.2 作用
多线程的作用是使程序在并发过程中,减少多个任务在等待线程处理所带来的时间的损耗。
官方声明在多线程编程时有两大原则:
- 不要阻塞UI线程:主线程被阻塞超过5s,则会出现ANR的异常,故主线程不能进行耗时的操作。
- 不要在UI线程之外的线程进行UI操作。
1.3 使用方式
线程的使用方式主要分为三大类:基础使用,复合使用,线程池。
- 基础使用
继承Thread类,或者匿名内部类创建一个Thread对象。
实现Runnable接口,由于是接口,因此不会影响本身类的继承。
实现Callable接口,相比Runnable,这种实现方式具有返回值,是个泛型,同时能抛出异常。 - 复合使用
AsyncTask异步任务的方式进行实现。
HandlerThread
IntentService - 线程池 即使多线程的使用,能够避免类似单线程执行多任务时,所付出的时空的消耗,但是盲目的开辟线程会造成大量的内存资源的浪费。这个时候就需要引入线程池的使用。 作用:对线程的复用,避免资源竞争出现资源浪费的问题。 常见的线程池类型:
1. FixThreadPool
CacheThreadPool
SingleThreadPool
ScheduledThreadPool
至此,多线程的了解到这里就已经写完了,如果需要知道具体某一块的使用,可查相关的具体的内容。