首页 > 其他分享 >线程淘汰策略

线程淘汰策略

时间:2023-12-03 23:48:48浏览次数:31  
标签:策略 队列 抛出 当前任务 任务 线程 淘汰

1、线程池的拒绝策略

  等待队列已经排满了,再也塞不下新任务了,同时,线程池中的max线程也达到了,⽆法继续为新任务服务。这个是时候我们就需要拒绝策略机制合理的处理这个问题。

2、JDK内置的拒绝策略

  AbortPolicy(默认):直接抛出RejectedExecutionException异常阻⽌系统正常运⾏

  CallerRunsPolicy:“调⽤者运⾏”⼀种调节机制,该策略既不会抛弃任务,也不会抛出异常,⽽是将某些任务回退到调⽤者,从⽽降低新任务的流量。

  DiscardOldestPolicy:抛弃队列中等待最久的任务,然后把当前任务加⼊队列中尝试再次提交当前任务。

  DiscardPolicy:该策略默默地丢弃⽆法处理的任务,不予任何处理也不抛出异常。如果允许任务丢失,这是最好的⼀种策略。

以上内置拒绝策略均实现了RejectedExecutionHandle接⼝

标签:策略,队列,抛出,当前任务,任务,线程,淘汰
From: https://www.cnblogs.com/lin513/p/17874027.html

相关文章

  • 内置线程池的使用
    packageorg.example.c2;importlombok.extern.slf4j.Slf4j;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;/****@Author徐庶......
  • Java线程安全问题
    一、共享资源共享资源是指,同时会有多个线程访问的资源。二、线程安全问题线程安全问题是指多个线程同时读写共享资源时并且没有任何同步措施的情况下,出现脏数据或者其他不可预见的结果的问题。当然如果所有线程都只是读取共享资源而不去修改共享资源是不会出现线程安全问题的。......
  • Redis的内存回收原理,及内存过期淘汰策略详解
    Redis内存回收机制Redis的内存回收主要围绕以下两个方面1Redis过期策略:删除过期时间的key值2Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰数据Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。Redis过期策略过期策略通常有以......
  • nginx 的安全策略问题
    1:前端嵌入iframe时,有时汇报安全策略如下:inaframebecauseanancestorviolatesthefollowingContentSecurityPolicydirective:"frame-ancestors‘self’。这里主要是frame-ancestors的参数需要调整。#不允许被嵌入,包括<frame>,<iframe>,<object>,<embed>和<appl......
  • 线程的六种状态
    New:初始状态(未调用start)刚刚创建完Runnable:运行状态执行startBlocked:阻塞状态  Waiting:等待状态通过Joinsleep等方法使线程在等待TimedWaiting:计时等待状态  sleepjoin等方法设置了参数Terminated:终止状态,线程执行完毕packageorg.example.test1;publ......
  • 学习笔记4:JavaSE & API(网络编程 & 多线程)
    1、java.net.Socket:(1)定义:Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过它获取两个流(一个输入一个输出),然后使用这两个流的读写操作完成与服务端的数据交互。(2)方法getInputStream():获取输入流,返回值是InputStream的一个子类实例。ge......
  • 线程合并
    主要来说就是主线程等待子线程可以设置参数(1000)就是等待子线程一秒如果子线程中要执行3秒则还是主线程先执行完packageorg.example.test1;importjava.util.concurrent.TimeUnit;publicclassJoinThread{staticintvalue=1;publicstaticvoidmain(Stri......
  • C++多线程编程:利用线程提高程序并发性
    C++多线程编程:利用线程提高程序并发性引言在现代计算机系统中,程序的并发性已经变得越来越重要。多线程编程是一种利用计算机的多核处理器来提高程序性能的方法。C++是一种功能强大的编程语言,提供了丰富的多线程编程支持。本文将介绍如何利用C++多线程编程来提高程序的并发性。什么......
  • Java并发(十六)----线程八锁
    所谓的“线程八锁”其实就是看synchronized锁住的是哪个对象情况1:12或21都是有可能的,就看cpu先调度哪个线程@Slf4j(topic="c.Number")classNumber{  publicsynchronizedvoida(){    log.debug("1"); }  publicsynchronizedvoidb(){......
  • 查看进程线程的方法
    windows任务管理器可以查看进程和线程数,也可以用来杀死进程tasklist查看进程taskkill杀死进程netstat-ano|findstr端口号查看某个端口号下的进程taskkill/f/pid强制杀死某个进程linuxps-ef查看所有进程ps-fT-p<PID>查看某个进程(PID)的所有线程kill杀死进程......