1 哲学家思维
线程池类比银行网点的情况
package threadpoolexecutor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class Fixed {
public static void main(String[] args) throws InterruptedException {
/**
*
* 线程池好处:
* 1 不用重复创建线程,提高效率;
* 2
固定的线程池适合长时间的任务
10个任务给5个线程来执行
*/
/**
* 固定数量的线程数量来执行任务,类似某银行网点的窗口始终全开。
*/
// ExecutorService executorService = Executors.newFixedThreadPool(5);
/**
* 只有一个线程来执行这个任务
*/
// ExecutorService executorService = Executors.newSingleThreadExecutor();
/**
* 不固定数量的线程数量来执行,根据任务情况来动态的调整线程数量,类似银行网点,如果发现
* 处理不过来了,就加业务员处理,发现轻松了,哎,就减少业务员,没有良心的企业!
*/
ExecutorService executorService = Executors.newCachedThreadPool();
for (int i = 1; i <=10; i++) {
executorService.execute(()->{
System.out.println(Thread.currentThread().getName()+"正在执行这个任务!");
});
//想一下,如果业务没那么着急,是不是不用再招聘更多的业务员来处理业务?因为业务员处理完上一个以后
//可以接着处理其他的。但是比较差的点就是处理效率不高。打印效果显示一个业务员就可以处理完这十个任务
//代价是需要10秒钟来处理
TimeUnit.SECONDS.sleep(1);
}
}
}