码迷,mamicode.com
首页 > 编程语言 > 详细

08 线程池

时间:2020-03-30 17:58:25      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:cut   led   结束   exe   LEDE   cond   大小   周期性   system   

问题

线程池的作用是什么

答案

如果没有线程池,用户的每一个请求都会经历申请资源创建线程,执行线程,释放资源销毁线程这个过程,很多时间浪费在创建和销毁这两件事情上。如果用户请求时线程已经存在,用户使用线程结束也不用去考虑如何销毁,由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定和管理资源的方法。线程池中的线程可以多次重用,这与数据库连接池是相同的逻辑。常见的线程池有:

  • 固定大小线程池,线程个数是固定的
        ExecutorService executorService = Executors.newFixedThreadPool(1);
        executorService.submit(new Runnable() {
            @Override
            public void run() {
                System.out.println("newFixedThreadPool");
            }
        });
        executorService.shutdown();
  • 缓冲线程池,线程个数不固定,随着用户请求可以扩展线程个数
        ExecutorService executorService = Executors.newCachedThreadPool();
        executorService.submit(new Runnable() {
            @Override
            public void run() {
                System.out.println("newFixedThreadPool");
            }
        });
        executorService.shutdown();
  • 单个线程池,线程个数固定为1
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        executorService.submit(new Runnable() {
            @Override
            public void run() {
                System.out.println("newFixedThreadPool");
            }
        });
        executorService.shutdown();
  • 周期线程池,可以周期性运行
        ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
        executorService.scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                System.out.println("newScheduledThreadPool");
            }
        },5,2,TimeUnit.SECONDS);

08 线程池

标签:cut   led   结束   exe   LEDE   cond   大小   周期性   system   

原文地址:https://www.cnblogs.com/alichengxuyuan/p/12599988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!