ExecutorService线程池

news2024/11/20 1:48:02

文章目录

    • ExecutorService线程池
    • 1 ExecutorService API 介绍
      • 1.1 api
        • 1.1.1 awaitTermination 方法
        • 1.1.2 invokeAll 方法
        • 1.1.3 invokeAny方法
        • 1.1.4 shutdown 方法
        • 1.1.5 shutdownNow方法
        • 1.1.6 isShutdown方法
        • 1.1.7 submit方法
        • 1.1.8 isTerminated方法

ExecutorService线程池

1 ExecutorService API 介绍

1.1 api

在这里插入图片描述

1.1.1 awaitTermination 方法

    boolean awaitTermination(long timeout, TimeUnit unit)
        throws InterruptedException;

描述:判断线程池是否关闭。该方法等待时间:timeout,单位unit,当返回true,表示线程池已关闭,返回false,线城市未关闭

  1. 参数1:最长等待时间
  2. 参数2:超时参数的时间单位

1.1.2 invokeAll 方法

    <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
        throws InterruptedException;
        
    <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
                                  long timeout, TimeUnit unit)
        throws InterruptedException;

描述:

  1. 执行任务列表中的所有任务,并返回与每个任务对应的Futue。
  2. 任务彼此之间不会相互影响,可以通过future跟踪每一个任务的执行情况,比如是否被取消,是正常完成,还是异常完成,这主要使用Future类提供的API。
  3. invokeAll是一个阻塞方法,会等待任务列表中的所有任务都执行完成。不管任务是正常完成,还是异常终止,Future.isDone()始终返回true。
  4. 通过 Future.isCanceled()可以判断任务是否在执行的过程中被取消。通过Future.get()可以获取任务的返回结果,或者是任务在执行中抛出的异常。

1.1.3 invokeAny方法

    <T> T invokeAny(Collection<? extends Callable<T>> tasks)
        throws InterruptedException, ExecutionException;
        
    <T> T invokeAny(Collection<? extends Callable<T>> tasks,
                    long timeout, TimeUnit unit)
        throws InterruptedException, ExecutionException, TimeoutException;

描述

  1. 执行一批任务,一旦有1个任务正常完成(执行过程中没有抛异常),返回该任务对应的Future对象,线程池会终止其他未完成的任务 。
  2. 如果提交的任务列表中,没有1个正常完成的任务,那么调用invokeAny会抛异常
  3. invokeAny()和任务的提交顺序无关,只是返回最早正常执行完成的任务
  4. 如果在超时之前,所有任务已经都是异常终止,那就没有必要在等下去了;如果超时之后,仍然有正在运行或等待运行的任务,那么会抛出TimeoutException。

1.1.4 shutdown 方法

描述:方法调用之后,马上拒绝接收新的任务,但是之前已经提交的任务会继续执行。

1.1.5 shutdownNow方法

List<Runnable> shutdownNow();

描述:该函数调用之后,马上拒绝接收新的任务,并且会尝试结束当前正在执行的任务,直到所有任务真正结束为止,并且会返回等待执行的任务的列表。

1.1.6 isShutdown方法

    boolean isShutdown();

描述:该函数判断线程池是否已经被shutdown,如果调用过shutdown函数,则返回true,否则返回false。

1.1.7 submit方法

<T> Future<T> submit(Callable<T> task);
<T> Future<T> submit(Runnable task, T result);
Future<?> submit(Runnable task);

描述:

  1. 向线程池提交一个任务,并且返回一个Futrue对象,用于追踪任务的执行情况。
  2. 三个函数区别,第一个函数在任务执行完毕之后Futrue.get()将会返回任务执行的结果;第二个函数在任务执行完毕之后Future.get()将会返回给定的result结果;第三个函数在任务执行完毕之后Future.get()将会返回null。

1.1.8 isTerminated方法

boolean isTerminated();

描述:该函数判断线程池中得所有任务是否已经全部执行完毕,并且应该注意的是:如果没有调用过shutdown函数或者shutdownNow函数,该函数的返回值不可能为true。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183394.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Makefile学习笔记(一)

背景 最近在看ATF代码的时候&#xff0c;想要编译下&#xff0c;实施起来遇到一些问题&#xff0c;其中makefile有些命令&#xff0c;语法不是很清晰&#xff0c;故希望重新系统学习下。学习主要参考跟我一起写Makefile-陈皓.pdf。 第一部分、概述 makefile解决的问题&#…

周期矩形波的傅里叶级数展开(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 当脉冲信号周期不变&#xff0c;脉冲宽度变大时&#xff0c;相邻谱线间隔不变&#xff0c;频谱包络线的零点频率逐渐变小&…

git查看分支、创建分支、合并分支

一、查看的git命令如下&#xff1a; git branch 列出本地已经存在的分支&#xff0c;并且当前分支会用*标记 git branch -r 查看远程版本库的分支列表 git branch -a 查看所有分支列表&#xff08;包括本地和远程&#xff0c;remotes/开头的表示远程分支&#xff09; git bran…

9、位和逗号的运算符与表达式

目录 一、位逻辑运算符与位逻辑表达式 1. 位逻辑运算符 2. 位逻辑表达式 二、逗号运算符与逗号表达式 一、位逻辑运算符与位逻辑表达式 1. 位逻辑运算符 位逻辑运算符包括位逻辑与、位逻辑或、位逻辑非和取补 注意&#xff1a;表中除了最后一个运算符是单目运算符外&…

PC 性能自动化工具技术方案及说明

● 需求背景 Kim PC端在每一个版本的迭代过程中&#xff0c;由于各版本的功能改动较多&#xff0c;为了避免在发布新版本时性能不会出现“大跳水”的情况&#xff0c;需要针对每一个版本进行性能测试。由于人工手动测试所需时间较长&#xff0c;且存在参数不准确、时间不可控等…

基于Java+SpringBoot+vue+element驾校管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

详解vue组件(属性、事件和插槽)

一、属性 1.自定义属性props 可以得出props 可以显示定义一个或一个以上的数据&#xff0c;对于接收的数据&#xff0c;可以是各种数据类型&#xff0c;同样也可以传递一个函数。通过一般属性实现父向子通信&#xff1b;通过函数属性实现子向父通信 2.inheritAttrs 3. data与…

十、顺序存储二叉树、线索化二叉树

1、二叉树顺序存储 1.1 特点 顺序二叉树通常只考虑完全二叉树第n个元素的左子节点为2*n1第n个元素的右子节点为2*n2第n个元素的父节点为(n-1)/2 n&#xff1a;表示二叉树中的第几个元素&#xff08;按0开始编号&#xff09;&#xff0c;也可以理解为n为数组下标。 1.2、基本…

力扣刷题记录——804. 唯一摩尔斯密码词、806. 写字符串需要的行数、824. 山羊拉丁文

本专栏主要记录力扣的刷题记录&#xff0c;备战蓝桥杯&#xff0c;供复盘和优化算法使用&#xff0c;也希望给大家带来帮助&#xff0c;博主是算法小白&#xff0c;希望各位大佬不要见笑&#xff0c;今天要分享的是——《力扣刷题记录——804. 唯一摩尔斯密码词、806. 写字符串…

Apache两个解析漏洞复现及防御方法

一、多后缀解析漏洞 形成原因&#xff1a; 配置apache时&#xff0c;对于apache配置不熟练&#xff0c;配置命令不清楚&#xff0c;在配置PHP文件处理程序时&#xff0c;配置命令存在问题&#xff1a;位于漏洞环境目录的 conf/docker-php.conf里的配置命令&#xff08;AddHand…

路由策略实验(华为)

题目&#xff1a; 思路&#xff1a; 为完成实验达成目的&#xff0c;需要明确两个区域内的协议&#xff0c;并且要避免造成环路&#xff0c;故需要改变r3-r1,r3-r4两边的优先级&#xff0c;可以避免造成环路&#xff0c;并且需要达到选路最优&#xff0c;设置匹配规则&#xff…

【机器学习】逻辑回归(实战)

逻辑回归&#xff08;实战&#xff09; 目录一、准备工作&#xff08;设置 jupyter notebook 中的字体大小样式等&#xff09;二、绘制 sigmoid 函数&#xff1a;σ(z)11e−z\sigma(z)\frac{1}{1e^{-z}}σ(z)1e−z1​三、查看鸢尾花数据集1、加载 iris 数据集并查看2、设计二分…

[Java]Maven学习笔记(尚硅谷2022)

文章目录&#x1f97d; Maven概述&#x1f30a; Maven的功能&#x1f30a; Maven简介&#x1f4a6; 构建&#x1f4a6; 依赖&#x1f4a6; Maven 的工作机制&#x1f97d; Maven核心程序解压和配置&#x1f30a; Maven 核心程序解压与配置&#x1f4a6; 下载&#x1f4a6; 解压…

电脑本地安装不同版本MySQL

本地已经安装了mysql5.7版本&#xff0c;想测试mysql8版本的用法&#xff0c;想在一台电脑同时配置不同版本的mysql在不同端口号&#xff0c;看起来简单&#xff0c;实现起来其实挺多坑的&#xff0c;总结下实战经验和大家分享下 一、下载安装 下载地址 二、配置 1、解压缩…

word标签功能:如何快速制作批量产品贴纸标签

在日常生活中&#xff0c;在商店购物时&#xff0c;经常可以看到&#xff0c;商品架上放有产品贴纸标签&#xff0c;用于消费者识别产品价格、日期或者组合成分等。在日常办公中&#xff0c;在办公用品或仓库物料上&#xff0c;同样也能看到贴纸标签&#xff0c;用于物品的分类…

Go语言安装

1. 介绍 Go语言是一门编译型语言。Go的语法接近C语言&#xff0c;但对于变量的声明有所不同。Go支持垃圾回收功能。 C/C&#xff1a;C/C语言直接编译成机器码&#xff0c;不需要执行环境&#xff0c;直接执行在操作系统上&#xff1b; Java&#xff1a;Java会先编译成字节码.c…

es6对象中的简写形式

对象属性简写 let name ww; let age 18; // es5写法 let es5 {name: name,age: age, }; // es6写法 let es6 {name,age }函数简写 let obj {es5: function () {}, // es5写法es6() {} // es6写法&#xff0c;省略 :function }计算属性名 let name ww; let age 18 let o…

前后端鉴权的10种方案

文章目录0、基本概念认证授权鉴权权限控制认证、授权、鉴权和权限控制的关系1. HTTP 基本鉴权1.1 认证流程图1.2 认证步骤解析1.2 认证步骤解析1.3 优点1.4 缺点1.5 使用场景2. Session-Cookie 鉴权2.1 什么是 Cookie2.2 什么是 Session2.3 Session-Cookie 的认证流程图2.4 Ses…

一起Talk Android吧(第四百七十八回:旋转类视图动画)

文章目录使用方法属性介绍示例代码各位看官们大家好&#xff0c;上一回中咱们说的例子是"平移类视图动画",这一回中咱们说的例子是"旋转类视图动画"。闲话休提&#xff0c;言归正转&#xff0c;让我们一起Talk Android吧&#xff01; 使用方法 旋转类动画…

【Java项目】从0到1构建一个博客系统

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaWeb】 ✈️✈️本篇内容:从0到1构建一个博客系统&#xff01; &#x1f680;&#x1f680;代码托管平台github&#xff1a;博客系统源码托管&#xff01; ⛵…