并发测试 JavaDemo
| /** | |
| * @author Jerry Lee | |
| */ | |
| public class Testee { | |
| static long countTimeIn500ms = 0; | |
| public static void main(String[] args) throws Exception { | |
| countTimeIn500ms = guessCountTimeIn500ms(); | |
| Thread runAndSleepTask = new Thread(new RunAndSleepTask(), "RunAndSleepTask"); | |
| Thread runAndWaitTask = new Thread(new RunAndWaitTask(), "RunAndWaitTask"); | |
| Thread runAndLongSleepTask = new Thread(new RunAndLongSleepTask(), "RunAndLongSleepTask"); | |
| runAndSleepTask.start(); | |
| runAndWaitTask.start(); | |
| runAndLongSleepTask.start(); | |
| System.out.println("Tasks started!"); | |
| Thread.sleep(Long.MAX_VALUE); | |
| } | |
| public static class RunAndSleepTask implements Runnable { | |
| @Override | |
| public void run() { | |
| String name = this.getClass().getSimpleName(); | |
| while (true) { | |
| for (long i = 0; i < countTimeIn500ms; i++) { | |
| } | |
| System.out.println(name + ": " + new Date()); | |
| try { | |
| Thread.sleep(500); | |
| } catch (InterruptedException e) { | |
| e.printStackTrace(); | |
| } | |
| } | |
| } | |
| } | |
| public static class RunAndWaitTask implements Runnable { | |
| @Override | |
| public void run() { | |
| String name = this.getClass().getSimpleName(); | |
| while (true) { | |
| for (long i = 0; i < countTimeIn500ms; i++) { | |
| } | |
| try { | |
| System.out.println(name + ": " + new Date()); | |
| synchronized (this) { | |
| this.wait(500); | |
| } | |
| } catch (InterruptedException e) { | |
| e.printStackTrace(); | |
| } | |
| } | |
| } | |
| } | |
| public static class RunAndLongSleepTask implements Runnable { | |
| @Override | |
| public void run() { | |
| String name = this.getClass().getSimpleName(); | |
| while (true) { | |
| for (long i = 0; i < countTimeIn500ms; i++) { | |
| } | |
| System.out.println(name + ": " + new Date()); | |
| try { | |
| Thread.sleep(5000); | |
| } catch (InterruptedException e) { | |
| e.printStackTrace(); | |
| } | |
| } | |
| } | |
| } | |
| /** | |
| * @return 100ms可以做{@code long}的计数次数。 | |
| */ | |
| static long guessCountTimeIn500ms() { | |
| System.out.println("start guess."); | |
| long count = 1000L * 1000 * 1000; | |
| // simple warm-up | |
| for (long i = 0; i < count; i++) { | |
| // nothing! | |
| } | |
| long tick = System.currentTimeMillis(); | |
| for (long i = 0; i < count; i++) { | |
| // nothing! | |
| } | |
| long duration = System.currentTimeMillis() - tick; | |
| System.out.printf("1G times count take %d ms.\n", duration); | |
| return count * 500 / duration; | |
| } | |
| } |
并发测试 JavaDemo的更多相关文章
- Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现
Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 1. 应用场景 1 2. 随机抽取数据原理 1 3. 常用的实现方法:::数据库随机函数 1 4. Mssq ...
- appium 并发测试
Android并发测试 Appium提供了在一台设备上启动多个Android会话的方案,而这个方案需要你输入不同的指令来启动多个Appium服务来实现. 启动多个Android会话的重要指令包括: - ...
- Fiddler 接口测试(Composer)的使用方法及并发测试
下载地址:https://www.telerik.com/download/fiddler 一.Composer简介 右侧Composer区域,是测试接口的界面: 相关说明: 1.请求方式:点开可以勾 ...
- spring boot2.0.4集成druid,用jmeter并发测试工具调用接口,druid查看监控的结果
一.项目介绍(本项目用的编程语言是jdk8,项目源码:https://github.com/zhzhair/spring-boot-druid.git) 1.引入pom依赖: <dependen ...
- 使用postman进行并发测试
1.打开postman软件 左侧栏点击+号键,创建一个并发测试文件夹 2.主面板点击+号键,输入一个测试地址,点击save按钮保存到并发测试文件夹 3.点击三角箭头,再点击Run,弹出Collecti ...
- Jmeter对HTTP请求压力测试、并发测试的简单使用方法
对于服务器性能测试这块的经验更是少得可以忽略.迫使不得不让我们去尝试了解测试的知识. 首先我们的需求场景如下: 服务器硬件:(只有一台) 系统:Windows 2003 WebServer:Tomca ...
- 协议并发测试工具 BoHexTest
BoHexTest V1.0.3 1.添加连接LOG打印2.优化代理及并发策略 大小: 1074688 字节修改时间: 2017年10月3日, 10:24:26MD5: EBAE5A17F7F5ED0 ...
- SoapUI 利用SoapUI进行简单的接口并发测试
利用SoapUI进行简单的接口并发测试 by:授客 QQ:1033553122 测试环境: SoapUI Pro 5.1.2 步骤如下 1. 把请求添加到测试套件 1.1. 途径1 1.新 ...
- Java接口多线程并发测试 (一)
本文为作者原创,禁止转载,违者必究法律责任!!! 本文为作者原创,禁止转载,违者必究法律责任!!! Java接口多线程并发测试 一,首先写一个接口post 请求代码: import org.apach ...
随机推荐
- Linux中在线安装Mysql和修改密码设置服务启动
一.说明:本文教大家在linux下在线安装mysql.网上的很多文章写的太乱,我们只取操作最方便的在线安装方式.本文以Centos为例. 二.安装过程. 1.安装客户端和服务端: (1)检查是否已经安 ...
- Emmet (前身为 Zen Coding)
使用示例: 在编辑器中输入缩写代码:ul>li* ,然后按下拓展键(默认为tab),即可得到代码片段: <ul> <li></li> <li>&l ...
- SQL Server临时表
[]SQL Server临时表]()https://docs.microsoft.com/zh-cn/sql/relational-databases/tables/temporal-tables)
- Python-统计svn变更代码行数
1 #!/bin/bash/python 2 # -*-coding:utf-8-*- 3 #svn统计不同url代码行数变更脚本,过滤空行,不过滤注释. 4 import subprocess,os ...
- xampp 教程
xampp教程1 使用安装包进行安装 (目前有三种可供选择下载的XAMPP for Windows: 安装包 简单且安全:XAMPP 的便捷安装程序.) 使用安装包来安装XAMPP是最简单的方法. ...
- Mysql查询数据库表结构以及字段类型并展示
1.建表语句sys_user CREATE TABLE `sys_user` ( `id` varchar(32) NOT NULL COMMENT '编号', `dept_id` varchar(3 ...
- VirtualBox-5.0.16设置windows与ubuntu的共享文件夹
操作环境:win7.VirtualBox-5.0.16.ubuntukylin-14.04.2-desktop-amd64 1.先下载安装VBoxGuestAdditions_5.0.17-10614 ...
- windows下命令行终端使用rz上传文件参数详解
rz命令: (X) = option applies to XMODEM only (Y) = option applies to YMODEM only (Z) = option applies t ...
- 批处理转exe工具(Quick Batch File Compiler )|bat格式化exe
看到的,就是回忆.历史总是那么漫不经心,走完一生.留下可以记忆的脚本.... 对于window编写的bat脚本,想加密吗? 你所想的,前辈们基本上都有产出成果.所以在这个开源.共享.进步的互联网时代. ...
- 【jsPDF】jsPDF插件实现将html页面转换成PDF,并下载,支持分页
1.目的:在前段是 jQuery库 或者 VUE库 或者两者混合库,将html 页面和数据 转换成PDF格式并下载,支持分页 1.项目背景: 对客户报修记录进行分类统计,并生成各种饼图.柱状图.线性图 ...