栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 线程池

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 线程池

为什么要使用线程池,先看看线程的有点:

1、降低资源消耗:通过复用已存在的线程,降低了线程创建和销毁造成的资源消耗

2、线程管理得到优化:线程池有效管理线程数量,资源统一调配,提供资源使用率。不会出现因过度创建线程资源耗尽而导致oom,从而提高系统的稳定性

3、简化了多线程的使用方法,降低了多线程的使用门槛。

4、使用线程池,可以使代码简单、优雅

java Executors 的四种线程池:

1、newCachedThreadPool

可缓存线程池:当有新任务提交时,有空闲线程就直接复用,没有空闲线程则创建新的线程来处理任务,队列中不储存任务,线程池不对大小做限制,线程池大小完全依赖于操作系统(理论上大小是Integer.MAX_VALUE)。如果线程空闲时间超过60s就会被回收。

2、newFixedThreadPool

指定大小的线程池:有新任务提交就创建一个新线程,当线程数量到设置的最大值时,再有提交新任务就会放入LinkedBlockingQueue 阻塞队列中,等到有空闲线程时,再从队列中取出任务继续执行。

3、newScheduledThreadPool

定长线程池:可指定线程池大小,支持定时及周期性任务

4、newSingleThreadExecutor

单线程线程池:只有一个线程,用仅有的一个线程来执行任务,保证所有任务按指定的顺序执行,新提交的所有任务会保存在LinkedBlockingQueue阻塞队列中,等待唯一的线程空闲后来执行

线程池的使用方法:(以newFixedThreadPool为例)

 //创建缓存线程池
 ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
 //创建定时调度线程池
 ExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(10);
 // 创建单一线程的线程池
 ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
  // 创建固定大小的线程池
 ExecutorService threadPool = Executors.newFixedThreadPool(5);

 for (int i = 0; i < 10; i++) {
     threadPool.execute(new Runnable() {
         @Override
         public void run() {
            System.out.println("Thread name==" + Thread.currentThread().getName());
         }
     });
 }
threadPool.shutdown();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003302.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号