Android线程

Posted Ayinger

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android线程相关的知识,希望对你有一定的参考价值。

一、 new Thread()   VS  ThreadPoolExcutor

1.  new Thread()的弊端

1) 每次new Thread() 性能差

2)线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom

3)缺乏更多功能,如定时执行,定期执行,线程中断

2. ThreadPoolExecutor--线程池,多线程的管理者

引入好处:

1)提升性能

2)防止内存过度消耗,控制活动线程的数量,防止并发线程过多

分类:

1)new CachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,如无可回收线程,则新建线程

2)new FixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待

3)new ScheduledThreadPool 创建一个定长的线程池,支持定时及周期性任务执行

4)new SingleThreadExecutor 创建一个单线程化的线程池,他只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO,LIFO)优先级别执行

3. 拓展:为什么Progress可以在工作线程池中工作

回答:因为progress的setProgress()方法添加了判断,如果不是主线程,使用了post()方法(依旧是依旧handle原理),通过handler将消息发送出去

以上是关于Android线程的主要内容,如果未能解决你的问题,请参考以下文章

Android进阶知识——Android线程和线程池

Android进阶知识——Android线程和线程池

Android进阶知识——Android线程和线程池

Android进阶知识——Android线程和线程池

Android线程池的使用

Android 怎么启动一个工作线程及线程如何与UI线程交互