iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java怎么实现手写线程池并测试
  • 459
分享到

Java怎么实现手写线程池并测试

2023-07-05 05:07:45 459人浏览 薄情痞子
摘要

本篇内容介绍了“Java怎么实现手写线程池并测试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!线程池的核心流程:在线程池核心原理的源码中,涉

本篇内容介绍了“Java怎么实现手写线程池测试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

线程池的核心流程:

Java怎么实现手写线程池并测试

在线程池核心原理的源码中,涉及到了一系列的流程,包括线程池队列数量是否已满,运用什么样的拒绝策略等。在我们手写线程池的代码中,不需要考虑那么多因素,只需要模拟简单的情景和过程,因此整体来讲还是比较简单的。

手写线程池,必不可少的组件有任务队列,任务的消费者线程池,线程池创建等。我们也可定义构造方法,创建指定大小的线程池线程个数。当然在使用完线程池中的线程后,我们需要考虑将其销毁或关闭。

Java怎么实现手写线程池并测试

相关代码和解释如下:

package XIAOWEI;import java.util.ArrayList;import java.util.List;import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue;import java.util.stream.IntStream;public class ThreadPool {    private static final int WorkQueueSIZE = 5;    private BlockingQueue<Runnable> workQueue;    private List<WorkThread> workThreads=new ArrayList<WorkThread>();        public ThreadPool(int poolSize,BlockingQueue<Runnable> workQueue) {        this.workQueue = workQueue;        IntStream.range(0,poolSize).forEach((i)->{            WorkThread workThread=new WorkThread();            workThread.start();            workThreads.add(workThread);        });    }        public ThreadPool(int poolSize){        this(poolSize,new LinkedBlockingQueue<>(WorkQueueSIZE));    }        public void extcute(Runnable task){        try {            workQueue.put(task);        } catch (InterruptedException e) {            e.printStackTrace();        }    }    public void shutdown(){        if(workThreads!=null && workThreads.size()>0){            workThreads.stream().forEach((workThread) -> {                workThread.interrupt();            });        }    }        class WorkThread extends Thread {        @Override        public void run() {            Thread currentThread = Thread.currentThread();            // 死循环 不断一直消费队列中的任务 直到任务被消费完全            while (true) {                try {                    if (currentThread.isInterrupted()) {                        break;                    }                    Runnable workTasK = workQueue.take();                    workTasK.run();                } catch (InterruptedException e) {                    currentThread.interrupt();                }            }        }    }}

相关测试代码如下:

package XIAOWEI;import java.util.stream.IntStream;public class ThreadPoolTest {    public static void main(String[] args) {        ThreadPool threadPool = new ThreadPool(5);        IntStream.range(0,10).forEach((i)->{            threadPool.extcute(()->{                System.out.println(Thread.currentThread().getName()+"2023一起加油");            });        });        threadPool.shutdown();    }}

一共在线程池中加入了五个线程和十个任务,因此每个线程会执行两个任务。

测试结果如下图所示:

Java怎么实现手写线程池并测试

“Java怎么实现手写线程池并测试”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Java怎么实现手写线程池并测试

本文链接: https://www.lsjlt.com/news/349735.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java怎么实现手写线程池并测试
    本篇内容介绍了“Java怎么实现手写线程池并测试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!线程池的核心流程:在线程池核心原理的源码中,涉...
    99+
    2023-07-05
  • Java实现手写线程池实例并测试详解
    前言 在之前的文章中介绍过线程池的核心原理,在一次面试中面试官让手写线程池,这块知识忘记的差不多了,因此本篇文章做一个回顾。 希望能够加深自己的印象以及帮助到其他的小伙伴儿们 在线程...
    99+
    2023-02-22
    Java手写线程池 Java 线程池
  • Java手写线程池之向JDK线程池进发
    目录前言JDK线程池一瞥自己动手实现线程池线程池参数介绍实现Runnable实现Callable拒绝策略的实现线程池关闭实现工作线程的工作实现线程池实现的BUG完整代码线程池测试总结...
    99+
    2022-11-13
    Java手写线程池 Java线程池
  • java实现手写一个简单版的线程池
    有些人可能对线程池比较陌生,并且更不熟悉线程池的工作原理。所以他们在使用线程的时候,多数情况下都是new Thread来实现多线程。但是,往往良好的多线程设计大多都是使用线程池来实现...
    99+
    2024-04-02
  • Java实现手写一个线程池的示例代码
    目录概述线程池框架设计代码实现阻塞队列的实现线程池消费端实现获取任务超时设计拒绝策略设计概述 线程池技术想必大家都不陌生把,相信在平时的工作中没有少用,而且这也是面试频率非常高的一个...
    99+
    2022-11-13
    Java手写线程池 Java线程池
  • Java并发编程面试之线程池
    目录什么是线程池线程池好处线程池的执行流程怎么用线程池corePoolSizemaximumPoolSizekeepAliveTimeunitworkQueuethreadFacto...
    99+
    2024-04-02
  • Java并发包线程池ThreadPoolExecutor的实现
    线程池主要解决两个问题:一是当执行大量异步任务时线程池能够提供较好的性能。在不使用线程池时,每当需要执行异步任务时直接new一个线程来运行,而线程的创建和销毁都是需要开销的。线程池里...
    99+
    2024-04-02
  • Java实现手写乞丐版线程池的示例代码
    目录前言线程池的具体实现线程池实现思路线程池实现代码线程池测试代码杂谈总结前言 在上篇文章线程池的前世今生当中我们介绍了实现线程池的原理,在这篇文章当中我们主要介绍实现一个非常简易版...
    99+
    2022-11-13
    Java手写线程池 Java线程池
  • java中怎么实现一个线程池
    本篇文章为大家展示了java中怎么实现一个线程池,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。有些人可能对线程池比较陌生,并且更不熟悉线程池的工作原理。所以他们在使用线程的时候,多数情况下都是new...
    99+
    2023-06-20
  • 用 Java 线程池实现高效并行处理
    1. 线程池的优势 性能提升:线程池避免了频繁创建和销毁线程的开销,从而显著提升性能。 资源控制:通过限制同时活动的线程数,线程池可以防止资源过度使用。 简化管理:线程池封装了线程管理的复杂性,使开发人员能够专注于业务逻辑。 2. 创...
    99+
    2024-03-13
    线程池
  • Java并发之怎么使用线程池
    这篇文章主要介绍“Java并发之怎么使用线程池”,在日常操作中,相信很多人在Java并发之怎么使用线程池问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java并发之怎么使用线程池”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-16
  • python编写的多线程接口并发测试
    import requests import json import threading import time import uuid class postrequests(): def __init__(self): ...
    99+
    2023-01-31
    多线程 接口 测试
  • java怎么自定义并发线程池
    要自定义并发线程池,可以使用`ThreadPoolExecutor`类来实现。`ThreadPoolExecutor`是`Execu...
    99+
    2023-10-25
    java
  • 手写java性能测试框架的实现示例
    目录引言代码分享基础类实现数据库的实现concurrent类引言 之前写过一个性能测试框架,只是针对单一的HTTP接口的测试,对于业务接口和非HTTP接口还无非适配,刚好前端时间工作...
    99+
    2024-04-02
  • 10分钟带你徒手写个Java线程池
    目录Java线程池核心原理手撸Java线程池定义核心字段创建内部类WordThread创建ThreadPool类的构造方法创建执行任务的方法完整源码编写测试程序总结Java线程池核心...
    99+
    2023-05-16
    Java手写线程池 Java线程池
  • Java简单实现线程池
    本文实例为大家分享了Java简单实现线程池的具体代码,供大家参考,具体内容如下 一、线程池 线程池是一种缓冲提高效率的技术。 相当于一个池子,里面存放大量已经创建好的线程,当有一个任...
    99+
    2024-04-02
  • golang怎么实现线程池
    在Golang中,可以使用goroutine和channel来实现线程池。下面是一个简单的示例: package main imp...
    99+
    2023-10-21
    golang
  • golang线程池怎么实现
    在Go语言中,可以使用`goroutine`和`channel`来实现线程池。下面是一个简单的线程池实现示例: package ma...
    99+
    2023-10-27
    golang
  • jdk线程池怎么实现
    本篇内容介绍了“jdk线程池怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!jdk线程池ThreadPoolExecutor的7个参数...
    99+
    2023-07-05
  • 学生视角手把手带你写Java 线程池初版
    目录Java手写线程池(第一代)手写线程池-定义参数手写线程池-构造器手写线程池-默认构造器手写线程池-execute方法手写线程池-处理任务手写线程池-优雅关闭线程池手写线程池-暴...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作