首页 > 其他分享 >线程池拒接测试添加日志

线程池拒接测试添加日志

时间:2023-09-08 11:33:40浏览次数:45  
标签:Runnable MDC contextMap 拒接 线程 日志 public

/**
 * 当线程池耗尽时,由调用者负责执行任务,并打印相关日志
 */
@Slf4j
public class CallerRunsWithLogPolicy implements RejectedExecutionHandler {

    public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
        // shutdown():不会立即终止线程池,而是要等所有任务缓存队列中的任务都执行完后才终止,但再也不会接受新的任务
        if (!e.isShutdown()) {
            log.error("线程池耗尽,本任务由调用方执行!");
            r.run();
        }
    }
}

 

2、子线程打印主线程的日志信息

public class MdcContextDecorator implements TaskDecorator {


    @Override
    public Runnable decorate(@NonNull Runnable runnable) {
        Map<String, String> contextMap = MDC.getCopyOfContextMap();
        return () -> {
            try {
                if (contextMap != null) {
                    MDC.setContextMap(contextMap);
                }
                runnable.run();
            } finally {
                MDC.clear();
            }
        };
    }
}

 

标签:Runnable,MDC,contextMap,拒接,线程,日志,public
From: https://www.cnblogs.com/yk775879106/p/17687167.html

相关文章

  • 谈谈JSF业务线程池的大小配置
    1.简介JSF业务线程池使用JDK的线程池技术,缺省情况下采用Cached模式(核心线程数20,最大线程数200)。此外,还提供了Fixed固定线程大小的模式,两种模式均可设置请求队列大小。本文旨在通过一个简化场景(“单服务应用”)下的负载测试,为“JSF业务线程池大小配置”提供基准测试结果,并形成一些......
  • 请大家一定不要像我们公司这样打印log日志
    前言最近接手了公司另一个项目,熟悉业务和代码苦不堪言。我接手一个新项目,有个习惯,就是看结构,看数据库,搜代码。其中搜代码是我个人这些年不知不觉形成的癖好,我下面给大家展示下这个小癖好。正文我面对一个到手的新项目,会主动去搜索一些关键词,让我对这个项目有个整体健......
  • 19 线程不安全的例子
    packageThreadDemo;importjava.util.ArrayList;importjava.util.List;//线程可能不安全/*1.买火车票2.银行取钱3.线程不安全的数组列表*/publicclassTest18_UnsafeList{publicstaticvoidmain(String[]args){List<String>list=new......
  • ELK日志缺失问题排查-多行日志聚合Logstash配置问题
    1.背景推荐系统的推荐请求追踪日志,通过ELK收集,方便遇到问题时,可以通过唯一标识sid来复现推荐过程最近在碰到了几个badcase,需要通过sid来查询推荐日志,但发现部分无法在kibana查询到2.分析推荐日志的整个收集流程如下:    线上机器日志平台FlumeKafkaLogstashE......
  • std list多线程使用
    #include<iostream>#include<list>#include<thread>#include<mutex>#include<condition_variable>#include<unistd.h>std::list<int>my_list;std::mutexmy_mutex;std::condition_variablemy_cond;voidadd_ele......
  • go并发编程系列七:使用goroutine写一个线程池
    TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimplifiedHungarianRussianChineseTraditionalIndonesianSlovakCzechItalianSlovenianDanishJapaneseSpanishDutchKl......
  • 【TinyWebServer】02半同步半反应堆线程池
    本篇主要围绕服务器项目中涉及的知识进行介绍,详细可参考《Linux下高性能服务器编程》。服务器编程基本框架主要由I/O单元,逻辑单元和网络存储单元组成,其中每个单元之间通过请求队列进行通信,从而协同完成任务。I/O单元:用于处理客户端连接,读写网络数据;逻辑单元:用于处理业务逻辑的......
  • #yyds干货盘点#Mysql慢查询日志
    Mysql慢查询日志数据库的慢查询是影响项目性能的一大因素,对于数据库我们要优化SQL,首先要找到需要优化的SQL,这就需要我们知道sql执行时间等信息,除了使用SHOWPROFILES;外,mysql也提供了“慢查询日志”功能,用来记录查询时间超过某个设定值的SQL,这将极大程度帮助我们快速定位到症结所在......
  • springboot随项目启动,实时监控日志文件并进行操作
    项目中用到了一个开源音视频服务,但是同事的服务有可能导致开源服务崩溃,所以就写了一个实时监控开源服务输出日志的服务,如果日志中有error信息的话就自动重启那个开源服务。不过后来还是在项目中把这部分屏蔽了。 1@Component2publicclassFileWatcherRunnerimplem......
  • 17 守护线程
    packageThreadDemo;//守护线程,等到用户线程结束后自动结束publicclassTest17_Daemon{publicstaticvoidmain(String[]args){Threadgod=newThread(newGod());god.setDaemon(true);//默认为false,是用户线程。手动设置true,是守护线程......