Android线程

pengjin 2019-12-01

一、 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将消息发送出去

相关推荐