模拟实现线程池

news/2024/7/24 12:38:51 标签: java, 算法, 数据结构

关于JAVA标志库创建线程池推荐看通过标准库创建线程池

核心思路

        实现一个submit方法,让用户传入要执行的任务,在线程池内部,将用户传入的任务存储到阻塞队列中,根据用户实例化线程池时传入的参数,知道线程池中线程的数量,在构造方法中循环创建并启动线程,线程池中线程的任务就是不停的取出阻塞队列中的任务并执行

代码

java">//模拟实现线程池
class MyThreadPool{
    //实例化一个阻塞队列用来存储添加进线程池的任务
    private BlockingQueue<Runnable> queue=new LinkedBlockingQueue<>();

    public void submit(Runnable task) throws InterruptedException {
        queue.put(task);
    }

    //在实例化线程池时就应该实例化线程去处理阻塞队列中存储的任务
    //所以实例化线程的代码在构造方法中书写
    //n表示线程池中线程的数量
    public MyThreadPool(int n){
        for(int i=0;i<n;i++){
            //线程要执行的任务是不停取出阻塞队列中的任务进行执行
            Thread t=new Thread(()->{
                while(true){
                    try {
                        Runnable task=queue.take();
                        task.run();
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            });

            t.start();
        }
    }

}

http://www.niftyadmin.cn/n/4997003.html

相关文章

nodejs设置镜像

1、npm镜像地址配置 -- 查看 npm 安装目录 npm root -g-- 查看 npm 配置信息 npm config list-- 查询当前镜像配置 npm get registry-- 或者仅修改 npm 命令镜像 -- 设置为淘宝镜像 npm config set registry https://registry.npmmirror.com -- 修改为官方镜像 npm config set…

Android逆向学习(二)vscode进行双开与图标修改

Android逆向学习&#xff08;二&#xff09;vscode进行双开与图标修改 写在前面 这其实应该还是吾爱的第一个作业&#xff0c;但是写完上一个博客的时候已经比较晚了&#xff0c;如果继续敲机械键盘吵到室友&#xff0c;我怕我看不到明天的太阳&#xff0c;所以我决定分成两篇…

Lesson4-3:OpenCV图像特征提取与描述---SIFT/SURF算法

学习目标 理解 S I F T / S U R F SIFT/SURF SIFT/SURF算法的原理&#xff0c;能够使用 S I F T / S U R F SIFT/SURF SIFT/SURF进行关键点的检测 SIFT/SURF算法 1.1 SIFT原理 前面两节我们介绍了 H a r r i s Harris Harris和 S h i − T o m a s i Shi-Tomasi Shi−Tomasi…

探索生成人工智能的前景

什么是生成式人工智能&#xff1f; 生成式人工智能是一类旨在创建新颖内容的人工智能 (AI) 技术和模型。与简单的复制不同&#xff0c;这些模型通过利用从训练数据集中收集的模式和见解从头开始生成数据&#xff0c;例如文本、图像、音乐等。 生成式人工智能如何运作&#xf…

高教社杯数模竞赛特辑论文篇-2012年A题:葡萄酒的评价(附获奖论文)

目录 摘 要 一、问题重述 二、问题分析 2.1 问题一的分析 2.2 问题二的分析

面试系列-Springboot 自定义starter使用详解

目录 一、创建项目 二、添加依赖 三、创建自动配置类 四、创建属性配置类 五、创建自定义 Logger 类 六、创建 Starter Starter 自动配置类 七、创建 META-INF/spring.factories 文件:

Python 虚拟环境相关命令

一 激活 在 cd venv/scripts 进入虚拟环境 执行命令 activate 1、创建虚拟环境 $ python -m venv 2、激活虚拟环境 $ source <venv>/bin/activate 3、关闭虚拟环境 $ deactivate

线性思维和系统思维

1 线性思维介绍 线性思维是一种直线的、均匀的、不变的、单一的、单维的思维方式&#xff0c;一切都随着初始条件的给定而给定。 线性思维的5种具体表现&#xff1a; 简单复制过往经验去推断未来 &#xff08;比如&#xff1a;银行工作者是铁饭碗&#xff09;用已知结果得出…