GolbarThreadPoll的使用

该博客详细介绍了如何创建一个自定义的线程池,包括核心线程数、最大线程数、线程存活时间和任务队列的设置。线程池使用了`ThreadPoolExecutor`,并实现了线程工厂和拒绝策略。通过`GlobalThreadPools.getInstance().execute()`方法启动任务。
摘要由CSDN通过智能技术生成

public class GlobalThreadPools {
private static final String TAG = “GlobalThreadPools”;

private static ExecutorService THREAD_POOL_EXECUTOR;//线程池

private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();//CPU数量
private static final int CORE_POOL_SIZE = CPU_COUNT;//核心线程数
private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2;//最大线程数
private static final int KEEP_ALIVE_SECONDS = 60;//线程闲置后的存活时间
private static final BlockingQueue<Runnable> sPoolWorkQueue = new LinkedBlockingQueue<>(CPU_COUNT);//任务队列
private static final ThreadFactory sThreadFactory = new ThreadFactory() {//线程工厂
    private final AtomicInteger mCount = new AtomicInteger(1);

    public Thread newThread(Runnable r) {
        return new Thread(r, "Music#" + mCount.getAndIncrement());
    }
};

private volatile static GlobalThreadPools mInstance;

private GlobalThreadPools() {
    initThreadPool();
}

public static GlobalThreadPools getInstance() {
    if (null == mInstance) {
        synchronized (GlobalThreadPools.class) {
            if (null == mInstance) {
                mInstance = new GlobalThreadPools();
            }
        }
    }
    return mInstance;
}

public void execute(Runnable runnable) {
    THREAD_POOL_EXECUTOR.execute(runnable);
}

//初始化线程池
private void initThreadPool() {
    THREAD_POOL_EXECUTOR = new ThreadPoolExecutor(
            CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE_SECONDS, TimeUnit.SECONDS,
            sPoolWorkQueue, sThreadFactory, new RejectedHandler()) {
        @Override
        public void execute(Runnable command) {
            super.execute(command);
        }
    };
}

private static class RejectedHandler implements RejectedExecutionHandler {
    @Override
    public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
        //可在这里做一些提示用户的操作
    }
}

}

调用:

//线程池开启任务

GlobalThreadPools.getInstance().execute(new Runnable() {
@Override

public void run() {

}

});

在mysqld_exporter的配置文件中,"collect.global_variables"用于指定需要采集的全局变量,其中包括"thread_pool_size"和"max_connections"等参数。这些全局变量的值将在指定的时间间隔内被采集,并通过Prometheus进行监控和告警。 对于"thread_pool_size"和"max_connections"这两个参数,需要根据具体的MySQL服务器配置和实际情况进行设置。 - thread_pool_size:该参数指定MySQL服务器的线程池大小,即同时可以处理的客户端连接数。如果MySQL服务器经常出现"Too many connections"的错误,可以适当增加该参数的值。但是,过高的线程池大小也会导致系统资源的浪费,因此需要根据实际情况进行调整。一般来说,可以将该参数设置为CPU核心数的2~3倍。 - max_connections:该参数指定MySQL服务器允许的最大连接数。如果MySQL服务器经常出现连接数过高的问题,可以适当降低该参数的值。但是,过低的最大连接数也会导致系统无法处理更多的客户端连接请求,因此需要根据实际情况进行调整。一般来说,可以根据服务器的硬件配置和实际负载情况,将该参数设置为100~1000之间的值。 需要注意的是,调整这些参数的值可能会对MySQL服务器的性能和稳定性产生影响,因此建议在进行调整之前,先进行充分的测试和评估。同时,建议使用监控工具对MySQL服务器的运行状态进行实时监控,及时发现并解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值