Java线程-线程池

Sun在Java5当中,对线程的类库做了大量的扩展,线程池是Java5的新特征之一。
有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类。
线程池的思想是一种对象池的思想,开辟了一块内存空间,里面放了很多的线程,线程的执行调度由池管理器来进行处理,当有线程任务时,会从池子当中取一个进行执行,当任务执行完成以后,重新放入池子,以便于给其它任务使用。这样就避免了反复创建线程所带来的性能开销,节省了系统的资源。

1、什么是Executor框架?

Executor框架同java.util.concurrent.Executor 接口在Java 5中被引入。
Executor是根据一组执行策略调度、控制异步的任务的框架。
无限制的创建线程会导致内存的溢出,所以创建一个线程池是一个更好的解决方案,因为可以限制线程的数量,回收再利用这些线程。
利用Executor可以很方便的创建线程池。
Java5的线程池分好多种:固定尺寸的线程池、单任务线程池、可变尺寸连接池、延迟连接池、单任务延迟连接池、自定义线程池。
(1)、newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
(2)、newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
(3)、newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
(4)、newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

2、 为什么使用线程池?

(1)、减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可以执行多个任务。
(2)、可根据系统的承受能力,调整线程池当中工作线程的数目,防止消耗过多的内存而把服务累趴下。

你可能感兴趣的:(Java,线程)