JAVA线程11
一、概述 1. new Thread的弊端 (1)每次new Thread新建对象性能差。 (2)线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom(内存溢出)。 (3)缺乏更多功能,如定时执行、定期执行、线程中断。 2. 线程池 线程池是指管理同一组同构工作线程的资源池,线程池是与工作队列(Work Queue)密切相关的,其中在工作队列中保存了所有等待执行的任务。工作线程(Worker Thread)的任务很简单:从工作队列中获取一个任务,执行任务,然后返回线程池并等待下一个任务。 3. 线程池的组成 一个线程池包括以下四个基本组成部分: (1)线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务; (2)工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务; (3)任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等; (4)任务队列(taskQueue):用于存放没有处理的任务。提供一种缓冲机制。 4. 什么时候适合使用线程池 在多线程应用中,如果大量的资源都耗费在创建和销毁线程上,那么可以使用线程池。 5. 合理利用线程池带来的好处 (1)降低资源消耗