美文网首页
JDK1.8 创建线程池有哪几种方式?

JDK1.8 创建线程池有哪几种方式?

作者: Java老白 | 来源:发表于2022-03-04 16:51 被阅读0次

newFixedThreadPool

定长线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程数量不再变化,当线程发生错误结束时,线程池会补充一个新的线程

测试代码:

image-20220304164821159

打印结果:

image-20220304164828107

newCachedThreadPool

可缓存的线程池,如果线程池的容量超过了任务数,自动回收空闲线程,任务增加时可以自动添加新线程,线程池的容量不限制

测试代码:

image-20220304164841895

打印结果:

image-20220304164850908

newScheduledThreadPool

定长线程池,可执行周期性的任务

测试代码:

image-20220304164902670

打印结果:

image-20220304164910620

newSingleThreadExecutor

单线程的线程池,线程异常结束,会创建一个新的线程,能确保任务按提交顺序执行

测试代码:

image-20220304164922604

打印结果:

image-20220304164931773

newSingleThreadScheduledExecutor

单线程可执行周期性任务的线程池

测试代码:

image-20220304164947833

打印结果:

image-20220304164956320

newWorkStealingPool

任务窃取线程池,不保证执行顺序,适合任务耗时差异较大。

线程池中有多个线程队列,有的线程队列中有大量的比较耗时的任务堆积,而有的线程队列却是空的,就存在有的线程处于饥饿状态,当一个线程处于饥饿状态时,它就会去其它的线程队列中窃取任务。解决饥饿导致的效率问题。

默认创建的并行 level 是 CPU 的核数。主线程结束,即使线程池有任务也会立即停止。

测试代码:

image-20220304165008381

打印结果如下,index:8,index:9并未打印出:

image-20220304165018825

金三银四已经开始了,许多程序员朋友最近要冲击大厂,自己总结的一些面试大厂的 PDF 及其答案,免费分享给大家,希望对大家今年找工作有所帮助

下面是内容截图,需要学习的,点击这里免费领取。

Java 基础技术

img

Java 集合

img

JVM

img

多线程与高并发

img image.gif img

SSM 框架

Java 横向技术

img

数据库

img

消息中间件

img img

Linux

img

Elasticsearch

img

最后

整份文档一共有将近 300页,全部为大家展示出来肯定是不太现实的,为了不影响大家的阅读体验就只展示了部分内容,还望大家海涵,需要学习的,点击这里免费领取。

相关文章

  • JDK1.8 创建线程池有哪几种方式?

    newFixedThreadPool 定长线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线...

  • 线程

    java 中创建线程有哪几种方式? Java中创建线程主要有三种方式: 一、继承Thread类创建线程类 (1)定...

  • java中创建线程池的方式

    创建线程池的方式: 使用Java提供的用于管理线程池的接口ExecutorService 创建线程池,共有四种方式...

  • 关于多线程你知道多少

    我们就从线程的创建方式开始吧,那么常见的线程创建方式有哪几种呢?1. 通过继承 Thread 类 2. 通过实现 ...

  • 5000字、12字 连环炮、一张图快速搞定线程池

    今天我给大家总结了线程池的12连环炮。 1、为什么要创建线程池? 2、创建线程池有哪些方式? 3、Executor...

  • 线程池

    多线程使用:使用注解方式注入线程池进行异步任务,避免手动方式创建线程池

  • 线程池学习笔记

    1、线程池的定义 2、Executors创建线程池的方式 3、ThreadPoolExecutor对象 4、线程池...

  • 自定义Java线程池

    线程池创建的参数 在创建线程的各种方式中我们有讲到过通过创建线程池来完成异步操作,但实际上jdk提供的Execut...

  • java知识总结-创建线程池的6种方式

    一、创建线程池的6种方式: Executors.newCachedThreadPool();创建一个可缓存线程池,...

  • JDK多任务执行框架

    1、为什么要使用线程池?2、线程池有什么作用?3、说说几种常见的线程池及使用场景。4、线程池都有哪几种工作队列?5...

网友评论

      本文标题:JDK1.8 创建线程池有哪几种方式?

      本文链接:https://www.haomeiwen.com/subject/mujmrrtx.html