🎀Java线程池创建

简介
Java 手动创建线程池
代码
package com.zk.app.utils;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
/**
* @program: ZK
* @description:
* @author: zuokun
* @create: 2024-11-20 15:44
**/
public class ThreadPoolUtils {
private static volatile ExecutorService testExecutor;
public static ExecutorService getTestExecutor() {
if(testExecutor == null){
synchronized (ThreadPoolUtils.class){
if(testExecutor == null){
testExecutor = new ThreadPoolExecutor(10, 20, 10,
java.util.concurrent.TimeUnit.SECONDS,
new ArrayBlockingQueue<>(100),
new ThreadFactoryBuilder().setNameFormat("test-pool-%d").build(),
new ThreadPoolExecutor.CallerRunsPolicy());
}
}
}
return testExecutor;
}
}
ThreadFactoryBuilder().setNameFormat是Guava库中的一个方法,用于构建ThreadFactory实例。这个ThreadFactory可以用来创建新的线程,并且可以设置线程的名称格式。
使用
@Test
public void poolTest() {
for (int i = 0; i < 10; i++) {
ThreadPoolUtils.getTestExecutor().submit(() -> {
System.out.println(Thread.currentThread().getName());
});
}
}
结果
test-pool-0
test-pool-3
test-pool-2
test-pool-1
test-pool-4
test-pool-5
test-pool-6
test-pool-7
test-pool-8
test-pool-9
结束
🎀Java线程池创建的更多相关文章
- ThreadPoolExecutor – Java Thread Pool Example(java线程池创建和使用)
Java thread pool manages the pool of worker threads, it contains a queue that keeps tasks waiting to ...
- 使用Java 线程池的利弊及JDK自带六种创建线程池的方法
1. 为什么使用线程池 诸如 Web 服务器.数据库服务器.文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务.请求以某种方式到达服务器,这种方式可能是通过网络协 ...
- java线程池之一:创建线程池的方法
在Java开发过程中经常需要用到线程,为了减少资源的开销,提高系统性能,Java提供了线程池,即事先创建好线程,如果需要使用从池中取即可,Java中创建线程池有以下的方式, 1.使用ThreadPoo ...
- java线程池及创建多少线程合适
java线程池 1.以下是ThreadPoolExecutor参数完备构造方法: public ThreadPoolExecutor(int corePoolSize,int maximumPoolS ...
- 按照阿里巴巴规范创建Java线程池
前言 Executors Executors 是一个Java中的工具类.提供工厂方法来创建不同类型的线程池. 常用方法: 1.newSingleThreadExecutor 介绍:创建一个单线程的 ...
- java中线程池创建的几种方式
java中创建线程池的方式一般有两种: 通过Executors工厂方法创建 通过new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize ...
- 浅谈Java线程池的概念、创建与执行
转': 浅谈Java线程池的概念.创建与执行 如果使用 newCachedThreadPool 线程池的实例: ExecutorService executor = Executors.newCa ...
- Java 线程池框架核心代码分析--转
原文地址:http://www.codeceo.com/article/java-thread-pool-kernal.html 前言 多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和 ...
- Java线程池使用说明
Java线程池使用说明 转自:http://blog.csdn.net/sd0902/article/details/8395677 一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极 ...
- (转载)JAVA线程池管理
平时的开发中线程是个少不了的东西,比如tomcat里的servlet就是线程,没有线程我们如何提供多用户访问呢?不过很多刚开始接触线程的开发攻城师却在这个上面吃了不少苦头.怎么做一套简便的线程开发模式 ...
随机推荐
- LinkedList的源码
LinkedList LinkedList是通过双向链表去实现的,他的数据结构具有双向链表的优缺点,既然是双向链表,那么的它的顺序访问效率会非常高,而随机访问的效率会比较低,它包含一个非常重要的私有内 ...
- dart变量类型详解
1==> 三个单引号的作用 String Str = ''' qijqowjdo 哈哈嘿嘿黑 '''; print(Str); 这样使用三个单引号,输出来换行:方便我们观看而已哈 2==> ...
- 巧用 CSS 实现高频出现的复杂怪状按钮 - 镂空的内凹圆角边框
在之前,我们有些过这么一篇文章 - 使用 CSS 轻松实现高频出现的各类奇形怪状按钮. 里面包含了如下这些图形: 你可以在这里看到:CodePen Demo -- CSS Various Button ...
- linux mint下安装截图工具
在linux下尝试了多款截图工具,综合下来,觉得shutter是最好用的,推荐大家使用. Shutter 是一个强大的截图工具,强大的功能集成到一个直观的简洁界面,应用程序自带多个区域截图(如全屏,选 ...
- 表治理-Iceberg小文件合并测试
总结 指标 合并前 合并后(因测试中多次合并,数据会偏多) 查询速度 246秒 13秒 表总大小 9.2G 26.4G 单个文件大小 1-25MB 60MB左右 metadata目录文件数 37 75 ...
- Atcoder ABC392F Insert 题解 [ 绿 ] [ 线段树二分 ] [ 倒序操作 ]
Insert:绷不住了,ds 学傻了导致一直在写一个假的没边的做法,赛后 5min 胡出正解,唐. 思路 首先正着操作想想就觉得不太好搞,所以考虑一个经典 trick:单点正向加入操作转化为倒序删除操 ...
- windows jdk环境变量配置
新建环境变量[classpath]变量值为[.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar] 新建环境变量[JAVA_HOME]变量值为jdk的安装目录 如:[ ...
- TensorFlow函数 tf.argmax()
参数: input:输入数据 dimension:按某维度查找. dimension=0:按列查找: dimension=1:按行查找: 返回: 最大值的下标 import tensorflow.co ...
- IOS 内付 asp.net mvc 服务器端验证
上代码: public class AppStorePayApp { public int VerifyReceipt(string receipt, out string product_id, o ...
- 【ABAQUS&Composite】composite layerup Manager从txt导入铺层信息
ABAQUS 在复合材料建模方面自由度是比较高的.官方提供了两个工具: ABAQUS/CAE中的Composite Layup Manager ABAQUS/CAE的plugin:Composites ...