目录
1.Thread和线程池优缺点对比
1.1使用Thread
1)每次new Thread新建对象性能差;
2)线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom;
3)缺乏更多功能,如定时执行、定期执行、线程中断;
1.2使用线程池
相比new Thread,Java提供的四种线程池的好处在于:
1)重用存在的线程,减少对象创建、消亡的开销,性能佳;
2)可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞;
3)提供定时执行、定期执行、单线程、并发数控制等功能;
2.实现Android高并发,可延迟处理的解决方案
2.1为什么不推荐无限制创建Thread执行
CPU之所以要增加线程数,是源于多任务处理的需要。线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。 因此,线程数是一种逻辑的概念,简单地说,就是模拟出的 CPU 核心数。一个核心最少对应一个线程,但英特尔有个超线程技术可以把一个物理线程模拟出两个线程来用,充分发挥 CPU 性能,即一个核心可以有两个到多个线程。
2.2实现多线程并发处理解决方案
可以采用生产者,消费者的模式,生产者指需要具体执行的线程,消费者负责执行线程,将线程可以有序执行,防止线程无限制执行占用过多的资源;
以下是生产消费者队列:
生产者:将具体要执行的线程放入消息队列;
消费者:线程池负责执行将从队列中线程执行;
拒绝机制:若发现线程池已满,则执行拒绝机制,将线程放入消息队列等待,等待线程池空闲继续执行;