线程池的简单理解及使用

线程池的技术背景


1、线程的创建和销毁很耗资源,重用线程池中的线程。减少因对象创建销毁所带来的性能开销
2、有效控制线程的最大并发数,提高系统资源利用率,同时避免过多的资源竞争,避免堵塞;

线程池框架Executor
Executor : 所有线程池的接口。 
ExecutorService:增加Executor的行为(执行execute,关闭shutdown),是Executor实现类的最直接接口。
Executors : 提供一系列的工厂方法(静态方法),(直接调用)创建生成线程池。
eg:ExecutorService pool = Executors.newSingleThreadExecutor();
其中Executors生成的常见线程池可分为4类:


1、newSingleThreadExecutor
单个线程的线程池
2、newFixedThreadExecutor
固定数量线程池
3、newCacheThreadExecutor(推荐)
可缓存线程池,当线程池大小超过处理任务所需的线程,就会回收部分空闲线程。有任务来,又智能添加
4、newScheduleThreadExecutor

大小无限制线程池,支持定时和周期的执行线程


public class TestCachedThreadPool {
    public static void main(String[] args) {
        //创建一个可重用固定线程数的线程池
        ExecutorService pool = Executors.newCachedThreadPool();
        //创建实现了Runnable接口对象
        Thread t1 = new Thread ();
        Thread t2 = new Thread ();
        Thread t3 = new Thread ();
        Thread t4 = new Thread ();
        Thread t5 = new Thread ();
        //将线程放入池中进行执行
        pool.execute(t1);
        pool.execute(t2);
        pool.execute(t3);
        pool.execute(t4);
        pool.execute(t5);
        //关闭线程池
        pool.shutdown();
    }
}

你可能感兴趣的:(线程池的简单理解及使用)