JAVA实现压力测试

在Java中实现压力测试通常涉及到使用多线程来模拟并发操作。以下是一个简单的例子,使用Java的ExecutorServiceCallable来执行并发的任务,进行简单的压力测试。

package useful;

import java.time.LocalDateTime;
import java.util.Calendar;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class PressTest {
    
    // Java实现压力测试
    static class StressTask implements Callable<Boolean> {
        public Boolean call() throws Exception {
            // 这里放置你的业务逻辑
            // 例如:
            // Thread.sleep(1000); // 模拟耗时操作
            Thread.sleep(getRandomNumber());
            return true;
        }
    }

 
    public static void main(String[] args) throws Exception {
//        int random = getRandomNumber();
//        System.out.println(random);
//        Thread.sleep(random);
        LocalDateTime localDateTime = LocalDateTime.now();
//        String b = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println(localDateTime);
//        System.out.println(Calendar.getInstance());
        StressTest();
        System.out.println(Calendar.getInstance());
        LocalDateTime localDateTime1 = LocalDateTime.now();
//      String b = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println(localDateTime1);
        System.out.println("Finish!!!!!");
    }
    
    public static int getRandomNumber() {
        // 创建一个Random对象
        Random random = new Random();
        
        // 生成一个0到1之间的随机小数
        double randomDouble = random.nextDouble();
        return (int) (randomDouble *1000);
    }
    
    public static void getRandomBetween(int min, int max) {
         Random random = new Random();
        int randomInt = random.nextInt(max - min + 1) + min;
        System.out.println("随机整数:" + randomInt);
    }

    
    public static void StressTest() throws Exception {
        // 创建固定大小的线程池
        ExecutorService executor = Executors.newFixedThreadPool(10); // 假设我们要10个并发线程
 
        // 提交100个并发任务
        int tasks = 100;
        Future<Boolean>[] futures = new Future[tasks];
        for (int i = 0; i < tasks; i++) {
            futures[i] = executor.submit(new StressTask());
        }
 
        // 等待所有任务完成
        for (Future<Boolean> future : futures) {
            future.get(); // 这将阻塞直到任务完成
        }
 
        // 关闭线程池
        executor.shutdown();
    }
}
 

这个例子中,我们定义了一个StressTask类,它实现了Callable接口。call方法中可以放置你要测试的业务逻辑,例如数据库操作、网络请求等。在main方法中,我们创建了一个固定大小的线程池,并提交了100个并发任务。每个Future实例对应一个任务,通过调用future.get()方法,我们等待所有任务完成。最后,我们关闭线程池以结束测试。

要进行压力测试,你需要根据实际情况调整线程池的大小以及提交的任务数量。这个例子提供了一个基本框架,你可以根据需要添加额外的监控和报告功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/759110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch 深度学习(GPT 重译)(四)

第二部分&#xff1a;从现实世界的图像中学习&#xff1a;肺癌的早期检测 第 2 部分的结构与第 1 部分不同&#xff1b;它几乎是一本书中的一本书。我们将以几章的篇幅深入探讨一个单一用例&#xff0c;从第 1 部分学到的基本构建模块开始&#xff0c;构建一个比我们迄今为止看…

C#关键字 sealed、unsafe、virtual、volatile

sealed 应用于某个类时&#xff0c;sealed 修饰符可阻止其他类继承自该类。 在下面的示例中&#xff0c;类 B 继承自类 A&#xff0c;但没有类可以继承自类 B。 class A {} sealed class B : A {}还可以对替代基类中的 虚方法 或 属性的方法 或 属性 使用 sealed 修饰符。 这…

酷炫的粒子动态表白HTML源码

源码介绍 酷炫的粒子动态表白HTML源码&#xff0c;自己自定义文字&#xff0c;动态组合文字&#xff0c;进行表白&#xff0c;喜欢的朋友可以下载使用&#xff0c;很不错的表白HTML代码 下载地址 酷炫的粒子动态表白HTML源码

2024蓝桥杯每日一题(Flood Fill)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;扫雷 试题二&#xff1a;动态网络 试题三&#xff1a;走迷宫 试题四&#xff1a;画图 试题一&#xff1a;扫雷 【题目描述】 扫雷是一种计算机游戏&#xff0c;在 2020 世纪 8080 年代…

【论文阅读】通过组件对齐评估和改进 text-to-SQL 的组合泛化

Measuring and Improving Compositional Generalization in Text-to-SQL via Component Alignment NAACL 2022| CCF B Abstract 在 text-to-SQL 任务中&#xff0c;正如在许多 NLP 中一样&#xff0c;组合泛化是一个重大挑战&#xff1a;神经网络在训练和测试分布不同的情况…

2024 Python3.10 系统入门+进阶(二):Python编程环境搭建

目录 一、Windows安装Python1.1 下载并安装 Python1.2 测试安装是否成功 二、Linux系统安装Python(新手可以跳过)2.1 基于RockyLinux系统安装Python(编译安装)2.2 基于Ubuntu系统安装Python(编译安装) 三、如何运行Python程序&#xff1f;3.1 Python 交互式编程3.2 编写Python源…

GB28181 —— 5、C++编写GB28181设备端,完成将USB摄像头视频实时转发至GB28181服务并可播放(附源码)

被测试的USB摄像头 效果 源码说明 主要功能模拟设备端&#xff0c;完成注册、注销、心跳等&#xff0c;同时当服务端下发指令播放视频时 设备端实时读取USB摄像头视频并通过OpenCV处理后实时转ps格式后封包rtp进行推送给服务端播放。 源码 /****remark: pes头的封装,里面的具…

开发环境配置本地hosts修改域名

一、找到hosts文件的位置&#xff1a; 方法一&#xff1a;windows系统下&#xff0c;直接 WinR 键输入&#xff1a; C:\WINDOWS\system32\drivers\etc 如图所示&#xff1a;输入完后点击确认 方法二&#xff1a;直接按照路径 C:\WINDOWS\system32\drivers\etc 去找 如图所示…

前端安全之XSS与CSRF

前端安全 XSS XSS(Cross-Site-Scripting)&#xff0c;跨站脚本攻击&#xff0c;因为缩写和 CSS 重叠&#xff0c;被别人抢先了&#xff0c;所以只能叫做 XSS。 攻击者可以利用这种漏洞在网站上注入恶意的客户端代码。若受害者运行这些恶意代码&#xff0c;攻击者就可以突破网…

Opencv | 图像基础知识

目录 一. 图像基础知识1. 颜色空间1.1 RGB颜色空间1.2 HSV颜色空间1.3 CMY(K)颜色空间 (了解) 2. 颜色图2.1 RGB三通道彩色图2.1.1 RGB图片数据格式 2.2 单通道灰度图 一. 图像基础知识 1. 颜色空间 1.1 RGB颜色空间 加法混色&#xff0c;彩色显示器 3通道&#xff1a;Red通道…

Selenium 学习(0.21)——软件测试之单元测试

我又回来了…… 其实我就是个渣&#xff0c;但是我努力、我尽心……所以也还能混得下去。这也是前面说的大厂和小厂之间的差异。 长得长的一定要割掉 其实对于软件测试这块&#xff0c;虽然没有系统学过&#xff0c;但是自己有全程编写过XXX系统&#xff0c;虽然不懂得一些专有…

什么样的网站不适合使用WordPress?

WordPress作为全球应用最广泛的CMS系统&#xff0c;很好很强大&#xff0c;被从多的网站使用。但是&#xff0c;也不是所有的网站。下面简站WP小编从自己多年WordPress建站经验的角度&#xff0c;给大家讲讲&#xff0c;有哪些网站不适合使用WordPress搭建。 1、功能特别多的功…

软考 系统架构设计师系列知识点之系统性能(2)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之系统性能&#xff08;1&#xff09; 所属章节&#xff1a; 第2章. 计算机系统基础知识 第9节. 系统性能 2.9.2 性能计算 性能指标计算的主要方法有定义法、公式法、程序检测法和仪器检测法。 常用的性能指标的经计算…

ASP.NET-Global.asax使用详解

本文介绍了如何使用Global.asax文件来增强ASP.NET Web应用程序的功能。首先&#xff0c;介绍了Global.asax文件的作用和基本功能。接着&#xff0c;详细探讨了在Global.asax中实现定时任务、应用程序级别的错误处理、应用程序启动和结束时执行特定逻辑等功能。随后&#xff0c;…

【Python 48小时速成 9】模块与包

在 Python 中&#xff0c;模块是一个包含了 Python 定义和声明的文件。包是一个包含了多个模块的文件夹&#xff0c;它还包含一个特殊的文件 __init__.py&#xff0c;该文件告诉 Python 解释器该文件夹是一个包。下面我们来分别讲解模块和包&#xff0c;并给出相应的示例代码&a…

QGIS编译(跨平台编译)056:PDAL编译(Windows、Linux、MacOS环境下编译)

点击查看专栏目录 文章目录 1、PDAL介绍2、PDAL下载3、Windows下编译4、linux下编译5、MacOS下编译1、PDAL介绍 PDAL(Point Data Abstraction Library)是一个开源的地理空间数据处理库,它专注于点云数据的获取、处理和分析。PDAL 提供了丰富的工具和库,用于处理激光扫描仪、…

ping 通ip,ping 不通域名

在linux 系统中&#xff0c;ping 通ip,ping 不通对应的域名时&#xff0c;可直接修改系统配置文件 vi /etc/hosts 加入 ip 域名

JavaScript 使用 Promise 实现 sleep 休眠

以下为代码实现&#xff0c;该代码实现了每隔1秒打印一次当前时间&#xff0c;总共打印5次的功能 for(let i 1; i < 5; i){console.log(new Date().toString())await new Promise(resolve>setTimeout(resolve,1000)) }实现休眠的核心代码为: await new Promise(resolv…

uniapp使用Canvas给图片加水印把临时文件上传到服务器

生成的临时路径是没有完整的路径没办法上传到服务器 16:37:40.993 添加水印后的路径, _doc/uniapp_temp_1710923708347/canvas/17109238597881.png 16:37:41.041 添加水印后的完整路径, file://storage/emulated/0/Android/data/com.jingruan.zjd/apps/__UNI__BE4B000/doc/…

Qt笔记 事件处理_鼠标事件

什么是事件&#xff1f; 点击鼠标左键&#xff0c;双击鼠标左键&#xff0c;鼠标来回移动&#xff0c;按下键盘按钮&#xff0c;这些都是事件。 那么事件的响应机制是什么样的呢&#xff1f; 首先main函数中有一个QApplication&#xff0c;其作用是创建一个应用程序对象&…