0
点赞
收藏
分享

微信扫一扫

程序员思维理解一

穆熙沐 2022-04-30 阅读 40
java

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);
        }

    }
}
举报

相关推荐

0 条评论