首页 > 其他分享 >通用线程池1

通用线程池1

时间:2024-10-10 11:33:21浏览次数:6  
标签:task 通用 线程 executor new public CommonThreadPool

 1 public class CommonThreadPool {
 2     private static final CommonThreadPool pool = new CommonThreadPool();
 3     private ThreadPoolExecutor executor;
 4     private CommonThreadPool() {
 5         int corePoolSize = 4;
 6         int maximumPoolSize = 4;
 7         int workQueue = 500;
 8         executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, 30000L, TimeUnit.MILLISECONDS, 
 9         new LinkedBlockingQueue<>(workQueue), 
10         new ThreadPoolExecutor.DiscardPolicy());
11         executor.allowCoreThreadTimeOut(true);
12     }
13 
14     public static CommonThreadPool getInstance() {
15         return pool;
16     }
17 
18     /**
19      * 添加带返回结果的任务(具体的线程任务需实现Callable接口)
20      */
21     public <M> Future <M> add(Callable<M> task) {
22         return executor.submit(task);
23     }
24 
25     /**
26      * 添加无返回结果的任务(具体的线程任务需实现Runnable接口)
27      */
28     public void add(Runnable task) {
29         executor.execute(task);
30     }
31 }
  1. 该线程池使用到了单例模式(饿汉模式)
  2. 线程池自定义了最大线程数、核心线程数、线程排队数,以及当线程排队超过限制时对超出部分线程的处理策略(这里是直接丢弃)
  3. 使用该线程池时,根据具体任务的类型,选择带返回结果或不带返回结果的方法

 

标签:task,通用,线程,executor,new,public,CommonThreadPool
From: https://www.cnblogs.com/ZT-SummerRain/p/18455991

相关文章

  • C#使用线程安全队列ConcurrentQueue处理数据
    usingSystem;usingSystem.Collections.Concurrent;usingSystem.Collections.Generic;usingSystem.Globalization;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;usingSystem.Threading.Tasks;namespaceConsoleApp10{internalclassProg......
  • vue3中如何实现通用头部?
    在Vue中实现通用头部可以通过以下几种方式:一、使用Vue组件创建头部组件首先,创建一个名为HeaderComponent.vue的Vue组件文件。在这个组件中,可以使用Vue的模板语法来设计头部的结构,例如包含导航栏、品牌标志、搜索框等元素。<template><header><......
  • [智能网联汽车/数据标准/法规政策] 标准解读:GB/T 44464-2024《汽车数据通用要求》
    0引言随着智能技术的不断发展,智能网联汽车作为新时代移动智能终端的代表,正引领着汽车产业向智能化、网联化深刻转型与升级。智能网联汽车与云端服务器、移动端、车端等设备存在大量的数据交互,包括车辆运行数据、用户个人信息等。缺乏对这些数据实施的有效监管与控制,将潜藏重大......
  • 基于Echarts+HTML5可视化数据大屏展示-大数据可视化通用版
    博主主页:猫头鹰源码博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作​主要内容:毕业设计(Javaweb项目|小程序|Python|HTML|数据可视化|SSM|SpringBoot|Vue|Jsp|PHP......
  • Java多线程编程基础与高级特性
    在现代软件开发中,多线程编程是一个重要的概念,它能够充分利用多核处理器的能力,提高程序的执行效率。Java语言内置了对多线程的支持,使得开发者可以方便地创建和管理线程。创建线程1.继承Thread类这是最直接的方式,通过创建一个继承自Thread类的子类,并重写run()方法来定义线程......
  • FTP连接池与多线程上传下载算法实现(C语言)
    FTP连接池与多线程上传下载算法实现(C语言)设计思路伪代码示例C代码示例为了避免多线程环境下FTP连接池在故障重连时导致的竞争条件和coredump问题,我们需要设计一个精细的连接池管理系统,确保在连接重连时,其他线程不会尝试使用该连接。以下是一个简化的设计思路和示......
  • 线程池
    线程池是一种用于管理和复用线程的技术,主要目的是提高系统性能和资源利用率。它通过预先创建一定数量的线程,并将它们保存在线程池中,当需要执行任务时,从线程池中获取一个空闲的线程来执行任务,而不是每次都创建新的线程¹²。线程池的工作原理线程池初始化:在应用程序启动时,线......
  • 线程安全与锁优化
    线程安全与锁优化1.线程安全什么是线程安全:《Java并发编程实战(JavaConcurrencyInPractice)》的作者BrianGoetz为“线程安全”做出了一个比较恰当的定义:“当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或......
  • Java与线程
    Java与线程1.线程的实现线程是比进程更轻量级的调度执行单位,线程的引人,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件IO等),又可以独立调度。目前线程是Java里面进行处理器资源调度的最基本单位。主流的操作系统都提供了线程实现,Java语言......
  • 容器不是线程安全
    标准库中的std::queue不是线程安全的。这意味着在多线程环境中,多个线程同时对std::queue进行读写操作时,可能会导致数据竞争(datarace)和未定义行为。下面是详细的解释:原因数据竞争:当多个线程同时对std::queue进行操作(如push、pop等),如果没有使用适当的同步机制(如锁),就......