当前位置:首页 > 每日看点 > 正文内容

java线程池有哪些?

卡卷网11个月前 (01-19)每日看点235

这题我会,java线程池有以下几种:

1. CachedThreadPool

  • 特点:这种线程池会创建一个可缓存的线程池,如果线程池的当前规模超过了处理需求,那么会回收空闲的线程(60秒不执行任务)。当需求增加时,此线程池又可以智能的添加新线程来处理任务。此线程池不对线程池大小做限制,完全依赖于JVM能够创建的最大线程大小。
  • 适用场景:适用于执行很多短期异步任务的程序。
  • 示例

ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int index = i; try { Thread.sleep(index * 1000); cachedThreadPool.execute(new Runnable() { public void run() { System.out.println(index); } }); } catch (InterruptedException e) { e.printStackTrace(); } }

2. FixedThreadPool

  • 特点:创建一个最大线程数固定的线程池。在任何时候,最多有N个线程会被工作,如果一个线程因为执行异常而结束,那么线程池会补充一个新线程。
  • 适用场景:适用于负载比较重、任务数比较多且线程执行时间较长的场景。
  • 示例

ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3); for (int i = 0; i < 10; i++) { final int index = i; fixedThreadPool.execute(new Runnable() { public void run() { try { System.out.println(index); Thread.sleep(index * 1000); } catch (InterruptedException e) { e.printStackTrace(); } } }); }

3. SingleThreadExecutor

  • 特点:只会创建一个线程,所有的任务都会按照任务的提交顺序来执行。如果这个线程异常结束,会新建一个线程继续工作。
  • 适用场景:适用于需要保证一系列相关任务顺序执行的场景。
  • 示例

ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); for (int i = 0; i < 10; i++) { final int index = i; singleThreadExecutor.execute(new Runnable() { public void run() { try { System.out.println(index); Thread.sleep(index * 1000); } catch (InterruptedException e) { e.printStackTrace(); } } }); }

4. ScheduledThreadPool

  • 特点:创建一个定时任务线程池,可以调度命令在给定的延迟后运行,或定期执行。
  • 适用场景:适用于需要执行定时任务或周期性任务的场景。
  • 示例

ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5); for (int i = 0; i < 10; i++) { final int index = i; scheduledThreadPool.schedule(new Runnable() { public void run() { System.out.println(index); } }, index * 1000, TimeUnit.MILLISECONDS); }

5. WorkStealingPool

  • 特点:创建一个拥有多个工作线程的线程池,这些工作线程会尝试“窃取”任务来执行。这种线程池可以提高CPU的利用率,适用于多核处理器。
  • 适用场景:适用于任务数量多且任务执行时间较短的场景。
  • 示例

ExecutorService workStealingPool = Executors.newWorkStealingPool(); for (int i = 0; i < 10; i++) { final int index = i; workStealingPool.execute(new Runnable() { public void run() { System.out.println(index); } }); }

6. ForkJoinPool

  • 特点ForkJoinPooljava.util.concurrent包中的一个线程池,用于执行ForkJoinTask任务。它使用了工作窃取算法,可以高效地处理大量小任务。
  • 适用场景:适用于需要递归分解任务的场景,如并行计算。
  • 示例

ForkJoinPool forkJoinPool = new ForkJoinPool(); int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int result = forkJoinPool.invoke(new SumTask(nums, 0, nums.length)); System.out.println(result); // 输出 55

7. 自定义线程池

  • 特点:可以自定义线程池的各种参数,如核心线程数、最大线程数、线程存活时间、任务队列等。
  • 适用场景:适用于需要精细控制线程池行为的场景。
  • 示例

int corePoolSize = 5; int maximumPoolSize = 10; long keepAliveTime = 1; TimeUnit unit = TimeUnit.MINUTES; BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(100); ThreadFactory threadFactory = Executors.defaultThreadFactory(); RejectedExecutionHandler handler = new ThreadPoolExecutor.AbortPolicy(); ThreadPoolExecutor customThreadPool = new ThreadPoolExecutor( corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory, handler ); for (int i = 0; i < 10; i++) { final int index = i; customThreadPool.execute(new Runnable() { public void run() { System.out.println(index); } }); }

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/10077.html

分享给朋友:

相关文章

想要在双 11 换一台全面无短板的新手机,有没有「闭眼买」的机型推荐?

想要在双 11 换一台全面无短板的新手机,有没有「闭眼买」的机型推荐?

最近一个月各大手机厂商的旗舰机扎堆发布,不知道大家看爽了没?这一代的性能续航大提升,最低 3599 元就能买到,同时老款也有不小的降幅,今年双 11 算是相当适合换手机的节点了!这次,小黑就给大家推荐双 11 期间值得购买的手机...150...

拼多多,怎么就成为了年轻人的「赛博菜市场」?

拼多多,怎么就成为了年轻人的「赛博菜市场」?

可惜你不在拼多多买水果蔬菜,很难一句话跟你解释,我只能笨拙的用经历来慢慢讲。我们公司有微波炉,同事们几乎都是自己带饭来上班,便当荤素搭配、水果零食;都是好看又好吃。我自己本来就不喜欢外卖,当然也加入了带饭大军: 直到某一天深夜我闲着无聊刷了...

提升自己最快的方式是什么?

提升自己最快的方式是什么?

1.稻盛和夫说过:“改变自己最快的方法就是做自己害怕的事,不敢做的事,认为自己做不到,觉得不可能的事。如果在自己的舒适区待久了,就会丧失斗志,如果想快速的改变,可以坚持去做一些对自己有益的事。2.早睡早起,坚持运动保持旺盛的精力,人生拼到最...

夸克浏览器受欢迎的原因是什么?

夸克浏览器受欢迎的原因是什么?

这是可以说的嘛~哈哈,它比较吸引我的几点是:安全无广、页面简洁、功能丰富、反应速度快......首页页面支持自定义,喜欢什么样子都可以自己调整,没有花里胡哨的各种资讯推送,热搜日报整理归纳好,想看再点开查看,看着舒适度直接拉满!实用日常工具...

大家都是怎么把自己的粉丝增加到1000的呢?

大家都是怎么把自己的粉丝增加到1000的呢?

截至2024年10月30日,关注者总数1137人,用时80天,增速约14人/天。2024年10月30日数据2024年8月10日开始创作,连续一周,1个关注者都没有。创作第7天,得到第一个关注,7天时间,写了8篇回答。当天得到关注,激动的心情...

为什么雷军身上没有酒色财气?

武大建校130周年时,雷军向母校个人捐款13亿。在2023年8月14日晚上七点,雷总在国家会议中心举行的进行第四次年度演讲「成长」:全篇都在谈成长、梦想,这么多年了,始终做到了知行合一,我相信酒色财气可能真不是他所追求的,一直追求的就像他演...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。