深入多线程十七:什么是池?线程池方式解决生产者与消费者问题

在学习Java的道路上,是否路过多线程时总让你很迷惘;很不巧,我也是,而使我们感到很迷惘主要原因都源于没有对概念的深深的理解和实践。所以我决定漫步Java多线程,同你一起会会多线程。

深入多线程系列

深入多线程一:理解多线程在于深深地理解了多任务、进程、多线程、线程
深入多线程二:手撕多线程,从会三种创建多线程方式开始:除了常见的两种,你是否了解Callable接口方式?
深入多线程三:初遇并发问题:从一个小故事开始,从一行行代码开始
深入多线程四:停止多线程,你不会还以为是用stop和destroy吧?
深入多线程五:多线程为何要使用休眠?
深入多线程六:线程礼让与强制执行
深入多线程七:纯手绘图解多线程状态+代码示例,就问你怕了吗?
深入多线程八:多线程的优先级
深入多线程九:守护线程
深入多线程十:通过案例体会多线程的不安全
深入多线程十一: 超全synchronized的两种用法:同步方法与同步块
深入多线程十二:什么是死锁?
深入多线程十三:什么是Lock锁,比起synchronized锁有什么区别?
深入多线程十四:经典生产者与消费者问题,本质是线程通信问题
深入多线程十五:管程方式解决生产者与消费者问题
深入多线程十六:信号灯方式解决生产者与消费者问题
深入多线程十七:什么是池?线程池方式解决生产者与消费者问题

学习解决生产者与消费者问题之前,我觉得我还是有必要提醒一下;如果在没有理解生产者和消费者问题之前,务必要先看多线程系列十四,因为只有在对解决问题本身有深入的理解思考,才能有更好的解决。
深入多线程十四 经典生产者与消费者问题,本质是线程通信问题

什么是池?

谈线程池之前,有没有对池这个概念感到很熟悉?

没错啦,我们连接数据库的时候,就有一个常用的池叫做连接池

竟然同样是池,那么就有它们相同的地方!

可以理解成一个空间里,放入空闲的线程,需要时从池中取,而用完没有直接释放掉,再放到池中给下一次请求可直接复用。

其他几种池的设计思想也是如此,一样一样的。

什么是线程池?

线程池就是提前创建多个线程,放入线程池中,使用便直接获取,用完放回池中;避免了频繁创建销毁、重复利用,大大减少资源的浪费。

线程池方式的应用场景与好处

经常需要创建和销毁,消耗特别大的资源,在并发情况下的线程,对性能有很大影响。

线程池方式的好处

性能方面,最直观的就是提高相应速度(减少创建和销毁线程时间)
降低资源消耗(可以重复利用线程池中线程,不必每次都创建)
方便线程管理,如线程池大小、最大的线程数、保持线程没有任务时多长时间终止

上手线程池

上手线程池前,我们得直到JDK1.5提供了线程池的API

ExcutorServiceExecutors

手敲代码实现

public class PoolDemo {

    public static void main(String[] args) {
        //1.创建线程池
        //newFixedThreadPool 的参数是线程池大小
        ExecutorService service = Executors.newFixedThreadPool(6);

        service.execute(new ThreadTest());
        service.execute(new ThreadTest());
        service.execute(new ThreadTest());
        service.execute(new ThreadTest());
        service.execute(new ThreadTest());
        service.execute(new ThreadTest());

       //2.关闭连接
        service.shutdown();
    }
}

    class ThreadTest implements Runnable{
        @Override
        public void run() {
                System.out.println(Thread.currentThread().getName());

        }
}

运行结果
在这里插入图片描述

最后:

最后的最后,为了更好的阅读体验,我把想说的话都放在了下面,嘿嘿。

我是一颗剽悍的种子 把我会的,认真的分享 是我写博客一直不变的信条。
如果你能看到这篇博文,说明咱们还是很有缘的;希望能带给你一些许帮助,创作的不易,
把我文章的知识带走,你的三连留下,点赞,评论,关注,是我最大的动力。

猜你喜欢

转载自blog.csdn.net/A_hxy/article/details/108289748