首页 > 其他分享 >线程池创建及使用--高效

线程池创建及使用--高效

时间:2023-01-10 11:57:14浏览次数:39  
标签:minioBucket 高效 minioTool -- fileName 线程 new data

1、依据系统合理创建线程池

  /**
     * 获取系统处理器个数,作为线程池数量
     */
    int nThreads = Runtime.getRuntime().availableProcessors();
    ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("pool-%d").build();

    /**
     * Common Thread Pool
     */
    ExecutorService pool = new ThreadPoolExecutor(nThreads, 200, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());

2、任务的创建

package com.hikvision.highwaydoc.util;

import com.hikvision.highwaydoc.constants.EnumMinioType;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.concurrent.Callable;

/**
 * @author liuyueyi
 * @version 1.0.0
 * @ClassName UploadPicThread.java
 * @Description ----
 * @createTime 2023年01月04日 19:42:00
 */
public class UploadPicTask implements Callable<String> {

    private MinioTool minioTool;
    private byte[] data;
    private String fileName;
    private EnumMinioType minioBucket;

    public UploadPicTask(MinioTool minioTool, byte[] data, String fileName, EnumMinioType minioBucket) {
        this.minioTool = minioTool;
        this.data = data;
        this.fileName = fileName;
        this.minioBucket = minioBucket;
    }

    @Override
    public String call() throws Exception {
     // 业务代码 InputStream inputStream; inputStream = new ByteArrayInputStream(data); String url = minioTool.uploadFile(inputStream, fileName, minioBucket); return url; } }

 

3、线程池的使用(多任务以及单任务一样处理)

ArrayList<Future<String>> uploadPicTaskList = new ArrayList<>();
for (PictureDataDTO pictureDataDTO : pictureDataDTOSaveList) {
    Future<String> future = pool.submit(new UploadPicTask(minioTool, pictureDataDTO.getPictureData().getData(), pictureDataDTO.getDocPicId() + suffix, EnumMinioType.OTHER));
    uploadPicTaskList.add(future);
}

 

标签:minioBucket,高效,minioTool,--,fileName,线程,new,data
From: https://www.cnblogs.com/l-926/p/17039722.html

相关文章

  • 【转载】单网卡、双网卡如何实现同时上内网和外网
    大家在日常办公生活中经常会遇到一个问题就是,办公室同时连接了内网和外网,如何能够同时上内网和外网呢?最近给一家单位调试网络,他们有自己的内部网络,同时还有外网。现在的要......
  • NetCore 集成 Kafka 基本使用
    .NetCore集成Kafka基本使用我们先部署Kafka的镜像可参考DockerHub我们这里直接创建一个docker-compose.yml文件创建以后执行docker-composeup-dversion:'3......
  • 期末课设——彩票购买开奖系统 组长:高旭 组员 :林语晴
    0准备工作0.1调研一般的彩票购买是没有线上渠道的。如果做一个线上彩票购买,需要有以下几个功能:-①登录/注册功能:要实现最基本的用户密码登录,注册,以及更改密码功能(增......
  • 微信小程序this.setData修改对象、数组中的值
    在微信小程序的[前端开发]中,使用this.setData方法修改data中的值,其格式为:this.setData({'参数名1':值1,'参数名2':值2)}需要注意的是,如果是简单变量,这里的......
  • 前端设计模式
    设计模式是一种在软件开发中常见的解决方案,可以帮助我们解决常见的设计问题。在JavaScript中,也有很多常见的设计模式。前端常见的设计模式包括:单例模式:单例模式可以保......
  • VS Code好用插件: Easy Less
    插件编译less并输出CSS文件输出文件......
  • Golang实现16/32位MD5加密
    转自:Golang实现16/32位MD5加密packagemainimport( "crypto/md5" "encoding/hex" "fmt")//返回一个32位md5加密后的字符串funcGetMD5Encode(datastring)stri......
  • EBS: PO单据类型查询
    --PO>>设置>>采购>>单据类型;SELECTpdt.document_type_code,pdt.org_id,pdt.document_subtype,pdt.document_template_code,......
  • 成像流式细胞仪-二
    先说结论:成像流式细胞仪是未来的发展趋势,随着延迟拍照技术的发展及高通量检测媲美传统流式,成像流式细胞仪将能够完全替代传统流式的所有功能,更重要的是其能提供细胞的形态......
  • C# null和Any()检查的快捷方式
    在C#6中if(x.Items?.Any()==true)也可以写自己的扩展方法:publicstaticboolNotNullOrEmpty<T>(thisIEnumerable<T>source){returnsource!=null&&sou......