首页 > 编程语言 >线程池的拒绝策略(Java)

线程池的拒绝策略(Java)

时间:2024-06-05 18:01:39浏览次数:26  
标签:Java 拒绝 keepAliveTime 任务 线程 new ThreadPoolExecutor

java线程池的拒绝策略

Java中的线程池拒绝策略定义了当任务无法执行时如何处理这些任务。以下是Java中常见的拒绝策略:

一、CallerRunsPolicy

#:当任务被拒绝添加时,如果调用者所在的线程不是线程池中的线程,那么任务将由该调用者所在的线程直接执行。

ExecutorService executor = new ThreadPoolExecutor(
    corePoolSize, maximumPoolSize, keepAliveTime,
    TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(queueSize),
    new ThreadPoolExecutor.CallerRunsPolicy());

二、AbortPolicy

#:这是默认的拒绝策略,不执行新任务并抛出RejectedExecutionException异常。

ExecutorService executor = new ThreadPoolExecutor(
    corePoolSize, maximumPoolSize, keepAliveTime,
    TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(queueSize),
    new ThreadPoolExecutor.AbortPolicy());

三、DiscardPolicy

#:不执行新任务,但是不抛出异常。

ExecutorService executor = new ThreadPoolExecutor(
    corePoolSize, maximumPoolSize, keepAliveTime,
    TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(queueSize),
    new ThreadPoolExecutor.DiscardPolicy());

四、DiscardOldestPolicy

#:不执行新任务,而是抛弃队列中最老的未处理任务,然后尝试再次执行新任务。

ExecutorService executor = new ThreadPoolExecutor(
    corePoolSize, maximumPoolSize, keepAliveTime,
    TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(queueSize),
    new ThreadPoolExecutor.DiscardOldestPolicy());

总结

在创建ThreadPoolExecutor时,可以选择一种拒绝策略,并将其传递给构造函数。例如,使用CallerRunsPolicy可以保证任务最终会被执行,但这可能会影响客户端的响应性。其他策略则在任务拒绝时不提供任何保证。根据应用程序的需求选择合适的拒绝策略。

标签:Java,拒绝,keepAliveTime,任务,线程,new,ThreadPoolExecutor
From: https://blog.csdn.net/MircoO/article/details/139476021

相关文章

  • Java环境配置(超详细)
    Java环境配置(超详细)引言1、安装JDK1.1、下载安装JDK1.2、配置环境变量:JAVA_HOME1.3、将JAVA_HOME添加到Path中2、安装Maven2.1、下载安装Maven2.2、配置maven的环境变量:M2_HOME2.3、将Maven变量添加到Path中引言Java开发环境的配置主要是安装JDK和Maven。1、......
  • Java1.8语言+ springboot +mysql + Thymeleaf 全套家政上门服务平台app小程序源码
    Java1.8语言+springboot+mysql +Thymeleaf 全套家政上门服务平台app小程序源码家政系统是一套可以提供上门家政、上门维修、上门洗车、上门搬家等服务为一体的家政平台解决方案。它能够与微信对接、拥有用户端小程序,并提供师傅端app,可以帮助创业者在不需要相关技术人员及......
  • 【Go-多线程】Golang的channel实现消息的批量处理
    【Go-多线程】Golang的channel实现消息的批量处理。当消息量特别大时,使用kafka之类的messagequeue是首选,但这是更加轻量的方案channelx.go//这个方案需要实现以下几点://1.消息聚合后处理(最大条数为BatchSize),核心://(1)带buffer的channel相当于一个FIFO的队列//(2)多个常驻的gorou......
  • JavaScript-匿名函数
    原文链接:https://blog.csdn.net/weixin_45203607/article/details/124227504什么是匿名函数1、匿名函数,即没有名称的函数2、如果单独只写一个匿名函数,此时是不符合语法要求的会报错。需要给匿名函数包裹一个括号,使之成为表达式。3、被小括号包裹的内容会被js识别为一个函数表......
  • 每天坚持写java锻炼能力---第一天(6.4)
    今天的目标是菜单:B站/马士兵的项目菜单packagejava1;importjava.util.Scanner;publicclassTest{publicstaticvoidmain(String[]args){while(true){//3.加入死循环,让输入一直有System.out.println();System.out.print......
  • zookeeper:Unexpected exception, exiting abnormally ::java.io.EOFException
    转载请注明出处:服务器中断,重启服务器在重启kafka服务时,遇到如下报错:2024-06-0513:52:56,251[myid:]-ERROR[main:ZooKeeperServerMain@64]-Unexpectedexception,exitingabnormallyjava.io.EOFExceptionatjava.io.DataInputStream.readInt(DataInputStream.j......
  • javaScript高级23_事件4
    一、概念某些组件被执行了某些操作后,触发某些代码的执行。事件:某些操作。如:单击,双击,键盘按下了,鼠标移动了事件源:组件。如:按钮文本输入框...监听器:代码。注册监听:将事件,事件源,监听器结合在一起。当事件源上发生了某个事件,则触发执行某个监听器代码。二、常见的事件......
  • Ollama,在centos7宿主机上,curl http://宿主机IP:11434 提示拒绝访问 ,但是curl http://l
    Ollama,在centos7宿主机上,curlhttp://宿主机IP:11434提示拒绝访问,但是curlhttp://localhost:11434 正常 1.使用 netstat 或 ss 命令在宿主机上检查 11434 端口的状态[root@localhost~]#netstat-tulnp|grep11434tcp00127.0.0.1:11434......
  • Redis——Java的客户端
    Java的客户端在Redis官网中提供了各种语言的客户端,地址:https://redis.io/clientsjedisjedis的官网地址:https://github.com/redis/jedis1.引入依赖<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.0......
  • Java—集合框架、时间和空间复杂度
    一、集合框架Java集合框架(JavaCollectionFramework),又称为容器(container),是定义在java.util包下的一组接口(interfaces)和其实现类(classes)其主要表现为将多个元素(element)置于一个单元中,用于对这些元素进行快速、便捷的存储(store)、检索(retrieve)、管理(manipulate......