Java并发编程入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

线程池

上一个程序中使用到了线程池。

我们知道,进程的创建的杀死都需要耗费一定的资源,采用线程就是因为线程耗费的资源较少,然而线程在创建和杀死的时候也同样会耗费资源,特别是在程序中需要平凡的这么做的时候,会浪费大量的资源。最形象的例子就是数据库的连接池,在连接数据库的时候设置了连接池用来节约和控制资源。

我们在来看一下刚刚的程序有关于线程池的关键部分:

ExecutorService executorService= Executors.newFixedThreadPool(5);
        Main main=new Main();
        for(int i=0;i<20;i++){
            executorService.submit(main);
        }

ExecutorService executorService= Executors.newFixedThreadPool(5)这一句是用来创建一个线程池,这个线程池里的参数代表了线程池允许运行最大的线程数量。所以这里的5代表了允许有5个线程。

executorService.submit(main)这个方法可以调用类中的run方法,无论他是Thread中的run还有Runnable接口中的run方法。

使用线程池编写一个多线程程序。