首页 > 其他分享 >如何给线程池命名

如何给线程池命名

时间:2023-11-11 22:01:22浏览次数:23  
标签:name ThreadFactory private 如何 线程 delegate 命名 final

1、利用 guava 的 ThreadFactoryBuilder

ThreadFactory threadFactory = new ThreadFactoryBuilder()
                        .setNameFormat(threadNamePrefix + "-%d")
                        .setDaemon(true).build();
ExecutorService threadPool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.MINUTES, workQueue, threadFactory);

2、自己实现 ThreadFactory

import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
/**
 * 线程工厂,它设置线程名称,有利于我们定位问题。
 */
public final class NamingThreadFactory implements ThreadFactory {

    private final AtomicInteger threadNum = new AtomicInteger();
    private final ThreadFactory delegate;
    private final String name;

    /**
     * 创建一个带名字的线程池生产工厂
     */
    public NamingThreadFactory(ThreadFactory delegate, String name) {
        this.delegate = delegate;
        this.name = name; // TODO consider uniquifying this
    }

    @Override
    public Thread newThread(Runnable r) {
        Thread t = delegate.newThread(r);
        t.setName(name + " [#" + threadNum.incrementAndGet() + "]");
        return t;
    }

}

标签:name,ThreadFactory,private,如何,线程,delegate,命名,final
From: https://blog.51cto.com/u_14299064/8320674

相关文章

  • 【.NET】多线程:自动重置事件与手动重置事件的区别
    在多线程编程中,如果每个线程的运行不是完全独立的。那么,一个线程执行到某个时刻需要知道其他线程发生了什么。嗯,这就是所谓线程同步。同步事件对象(XXXEvent)有两种行为:1、等待。线程在此时会暂停运行,等待其他线程发出信号才继续(等你约);2、发出信号。当前线程发出信号,其他正在等待......
  • 变量,常量,作用域,变量的命名规范
       ......
  • 如何实现对各种IT资源和服务的全面、实时监控和运维
    监控易是一款基于云计算和大数据技术的IT运维监控平台,能够实现对各种IT资源和服务的全面、实时、智能的监控和管理,帮助企业提高IT运维效率和质量,降低运维成本和风险,保障业务的稳定性和可用性。什么是监控易?监控易是一款基于云计算和大数据技术的IT运维监控平台,能够实现对各种IT资源......
  • 如何有效地监控和管理IT基础设施
    IT运维是企业信息化建设的重要组成部分,也是企业业务系统的保障和支撑。然而,随着IT设备的增多、网络环境的复杂化、云计算服务的普及化,IT运维面临着越来越多的挑战和风险,如何有效地监控和管理IT基础设施,提高IT运维效率和质量,成为了企业关注的焦点问题。为了帮助企业解决这一问题,美信......
  • 安防视频监控平台EasyNVR如何使用视频监控系统打造数字化手术室
    EasyNVR是一种可支持设备通过RTSP/Onvif流媒体协议接入的视频处理系统。该系统能够对接入的视频流进行处理,并以多种格式进行多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS和WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播、云端录像、云存储、录像......
  • 深入了解Java进程和线程
    Java是一种流行的编程语言,广泛用于开发各种应用程序,从桌面应用到服务器端应用。在Java编程中,进程和线程是两个关键概念,它们对于实现多任务处理和并发性非常重要。本文将深入探讨Java中的进程和线程,以及如何使用它们来构建高效的应用程序。什么是进程?在Java中,进程是一个独立的执行环......
  • 如何在多台Linux系统主机上实现ssh免密访问——成公钥文件id_rsa.pub(数字签名RSA)
     假设共有三台Linux主机,为matser,slave1,slave2,现在要实现master主机可以ssh免密访问master主机自身以及slave1、slave2。 原理:主机 ssh-keygencat/root/.ssh/id_rsa.pub>/root/.ssh/authorized_keysssh-copy-idroot@slave1ssh-copy-idroot@slave2......
  • windows操作系统中如何将apache zookeeper安装为系统服务
    记录一下,网上有些资料是错的,prunsrv的参数要以--开头!一下载最新版的apachecommonsdaemonhttp://archive.apache.org/dist/commons/daemon/binaries/windows/commons-daemon-1.3.4-bin-windows.zip解压,复制两个exe文件到zk的bin目录下二编写服务停止脚本(启动脚本不用自己......
  • TechLeader技术如何成长
    今天刚好有幸和小红书企业信息部的一位总监进行了一个交流,我问到了一个问题,就是作为一名技术leader,怎么样让自己的技术有所成长?说说背景,作为一名技术Leader,他的核心的责任一定是带领整个团队成功,那么就避免不了要去处理很多团队相关的事情,比如在业务方面要去协同,要去宣传技术能力以......
  • 如何在第一个查询没有结果时执行第二个查询 - MYSQL
    在MySQL中,您可以使用IFNULL()函数和UNION操作符来实现在第一个查询没有结果时执行第二个查询。下面是一个示例:SELECTcolumn1,column2FROMtable1WHEREconditionUNIONSELECTcolumn1,column2FROMtable2WHEREconditionANDNOTEXISTS(SELECTcolumn1,column2......