线程池
上一个程序中使用到了线程池。
我们知道,进程的创建的杀死都需要耗费一定的资源,采用线程就是因为线程耗费的资源较少,然而线程在创建和杀死的时候也同样会耗费资源,特别是在程序中需要平凡的这么做的时候,会浪费大量的资源。最形象的例子就是数据库的连接池,在连接数据库的时候设置了连接池用来节约和控制资源。
我们在来看一下刚刚的程序有关于线程池的关键部分:
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方法。
使用线程池编写一个多线程程序。