实现java简单的线程池

要实现Java简单的线程池,可以采用ThreadPoolExecutor类,它是Executor的实现,可以通过构造函数来自定义线程池中线程的数量、队列的大小等参数。

下面是Java简单线程池实现的详细步骤:

1.创建ThreadPoolExecutor

int corePoolSize = 10;// 线程池核心线程数
int maximumpoolSize = 20;// 线程池最大线程数
long keepAliveTime = 60;// 线程池中超过corePoolSize数目的空闲线程最大存活时间;
TimeUnit unit = TimeUnit.SECONDS;// keepAliveTime的时间单位
BlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<>(50);// 线程池阻塞队列
ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maximumpoolSize, keepAliveTime, unit, workQueue);

2.提交任务

使用execute(Runnable command)方法提交一个任务。

executor.execute(new Runnable() {
     @Override
     public void run() {
         // 此处为任务要执行的代码
     }
});

3.关闭线程池

虽然Java线程池支持自动管理,但是在不需要时,我们应该手动关闭线程池。

executor.shutdown();

示例一

下面我们可以通过一个简单的示例,了解线程池的基本实现。

public class ThreadPoolExample {
    public static void main(String[] args) {
        int taskCount = 5;
        int workerCount = 3;
        ExecutorService executor = Executors.newFixedThreadPool(workerCount);

        for(int i = 0; i < taskCount; i++) {
            executor.submit(new Task(i));
        }

        executor.shutdown();
    }
}

class Task implements Runnable {
    private int taskId;

    public Task(int taskId) {
        this.taskId = taskId;
    }

    @Override
    public void run() {
        System.out.println("Task Id : " + this.taskId + " performed by " + Thread.currentThread().getName());
    }
}

在这个示例中,我们创建了一个包含 5 条任务的线程池 executor,最大并行执行线程数为 3。使用 executor.submit 方法将任务提交给线程池进行处理。

示例二

我们也可以通过自定义线程池实现,对线程池进一步掌握。

public class CustomThreadPoolExample {

    // 自定义线程池
    private static ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 10, 5L, TimeUnit.SECONDS,
            new ArrayBlockingQueue<>(10));

    public static void main(String[] args) {
        int taskCount = 15;
        for(int i = 0; i < taskCount; i++) {
            executor.execute(new Task(i));
        }

        executor.shutdown();
    }
}

class Task implements Runnable {
    private int taskId;

    public Task(int taskId) {
        this.taskId = taskId;
    }

    @Override
    public void run() {
        System.out.println("Task Id : " + this.taskId + " performed by " + Thread.currentThread().getName());
    }
}

在这个示例中,我们自定义了一个线程池 executor,最大并行执行线程数为 10。使用 executor.execute 方法将任务提交给线程池进行处理。

以上是Java简单线程池的实现攻略,可根据实际需求进行灵活配置。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:实现java简单的线程池 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • java 获取路径的各种方法(总结)

    Java 获取路径的各种方法(总结) 在Java编程中,获取路径是经常会使用到的操作。本文将总结Java中获取路径的各种方法。 方法一:System.getProperty(“user.dir”) 使用System.getProperty(“user.dir”)可以获取当前项目的根路径。 String projectPath = System.getProp…

    Java 2023年5月20日
    00
  • 9个java数组常用操作实例

    9个Java数组常用操作实例 Java中的数组操作是开发者常用的操作之一,本篇文章将介绍9个常用的数组操作。 1. 创建数组 Java中使用[]操作符可以创建数组,下面的实例创建了一个长度为5的整型数组。 int[] arr = new int[5]; 2. 设置数组元素值 可以使用下标[]操作符为数组指定位置设置元素值,下面是一个将第2个元素设置为7的示例…

    Java 2023年5月26日
    00
  • Spring框架的环境搭建和测试实现

    下面是 “Spring框架的环境搭建和测试实现” 的完整攻略: 环境搭建 1. 安装Java 首先,我们需要安装JDK(Java Development Kit)。请根据您的操作系统下载对应的JDK,在官方网站 https://www.oracle.com/java/technologies/downloads/ 上可获取到各版本的JDK安装包。 安装完成后…

    Java 2023年5月31日
    00
  • Java类加载器的作用是什么?

    Java类加载器的作用是将类文件加载到内存中,并使其能够被Java虚拟机识别。在Java中,类的加载是在其被首次引用时完成的,而类加载器则是负责协调和完成这个任务的组件。 Java类加载器的主要作用包括: 将.class文件加载到JVM中 确定每个类在JVM中的唯一性 保证不同类的可见性 实现类的动态加载和卸载 实现Java程序的模块化开发 Java类加载器…

    Java 2023年5月11日
    00
  • Springboot FatJa原理机制源码解析

    Springboot FatJar原理机制源码解析 什么是Springboot FatJar Springboot FatJar是一种打包方式,它将应用程序及其所有依赖库打包到一个可执行的JAR文件中。这样,我们只需要一个JAR文件就能部署整个应用程序到服务器上,而无需考虑依赖库的配置问题。同时,FatJar还具有开箱即用的特点,即使是在没有安装任何JDK或…

    Java 2023年5月19日
    00
  • Java输出系统当前的日期(年月日时分秒毫秒)

    Java中可以使用java.util包下的Date类来输出系统当前的日期和时间。下面是几个不同的方法来输出当前日期时间: 方法一: 使用java.util.Date类 Java中的Date类有一个无参构造方法,它将当前日期和时间设置为系统当前的日期和时间。我们可以使用这个构造方法来创建一个Date对象,并使用SimpleDateFormat类将其格式化为我们…

    Java 2023年5月20日
    00
  • Java序列化JSON丢失精度问题的解决方法(修复Long类型太长)

    Java序列化JSON丢失精度问题的解决方法(修复Long类型太长) 问题描述 在使用Java自带的GSON等JSON序列化工具时,会出现Long类型数据过长而丢失精度的问题,导致数据不准确或错误。例如,当Long类型数字过大时,就无法正确表示,例如Long.MAX_VALUE加1即可出现此问题。这种情况会导致传输的数据与实际值出现差异,影响数据的准确性。 …

    Java 2023年5月26日
    00
  • Android 解析JSON对象及实例说明

    Android 解析JSON对象及实例说明 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript语言的一个子集,因此容易被人阅读和编写,同时也易于机器解析和生成。在Web应用程序中,JSON通常用来传递从服务器到客户端的数据。 Android中使用JSON Android中提…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部