/**
* @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的更多相关文章

  1. Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现

    Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 1. 应用场景 1 2. 随机抽取数据原理 1 3. 常用的实现方法:::数据库随机函数 1 4. Mssq ...

  2. appium 并发测试

    Android并发测试 Appium提供了在一台设备上启动多个Android会话的方案,而这个方案需要你输入不同的指令来启动多个Appium服务来实现. 启动多个Android会话的重要指令包括: - ...

  3. Fiddler 接口测试(Composer)的使用方法及并发测试

    下载地址:https://www.telerik.com/download/fiddler 一.Composer简介 右侧Composer区域,是测试接口的界面: 相关说明: 1.请求方式:点开可以勾 ...

  4. spring boot2.0.4集成druid,用jmeter并发测试工具调用接口,druid查看监控的结果

    一.项目介绍(本项目用的编程语言是jdk8,项目源码:https://github.com/zhzhair/spring-boot-druid.git) 1.引入pom依赖: <dependen ...

  5. 使用postman进行并发测试

    1.打开postman软件 左侧栏点击+号键,创建一个并发测试文件夹 2.主面板点击+号键,输入一个测试地址,点击save按钮保存到并发测试文件夹 3.点击三角箭头,再点击Run,弹出Collecti ...

  6. Jmeter对HTTP请求压力测试、并发测试的简单使用方法

    对于服务器性能测试这块的经验更是少得可以忽略.迫使不得不让我们去尝试了解测试的知识. 首先我们的需求场景如下: 服务器硬件:(只有一台) 系统:Windows 2003 WebServer:Tomca ...

  7. 协议并发测试工具 BoHexTest

    BoHexTest V1.0.3 1.添加连接LOG打印2.优化代理及并发策略 大小: 1074688 字节修改时间: 2017年10月3日, 10:24:26MD5: EBAE5A17F7F5ED0 ...

  8. SoapUI 利用SoapUI进行简单的接口并发测试

    利用SoapUI进行简单的接口并发测试 by:授客 QQ:1033553122 测试环境: SoapUI Pro 5.1.2 步骤如下 1.   把请求添加到测试套件 1.1.     途径1 1.新 ...

  9. Java接口多线程并发测试 (一)

    本文为作者原创,禁止转载,违者必究法律责任!!! 本文为作者原创,禁止转载,违者必究法律责任!!! Java接口多线程并发测试 一,首先写一个接口post 请求代码: import org.apach ...

随机推荐

  1. java获取cpu、内存、硬盘信息[转]

    http://m.oschina.net/blog/312911 1 下载安装sigar-1.6.4.zip 使用java自带的包获取系统数据,容易找不到包,尤其是内存信息不够准确,所以选择使用sig ...

  2. linux下jdk_tomcat+mysql配置那点事

    (1)上传环境压缩包 apache-tomcat-7.0.47.tar.gz, jdk-7u71-linux-x64.gz, mysql-5.6.14.tar.gz通过xftp工具上传到/usr/lo ...

  3. python object对象

    动态语言的对象属性 既然都是动态语言,自然python和熟知的JavaScript很像,建一个空对象用来存放所有的数据,看看js: var data = {}; data.name = 'CooMar ...

  4. 写一个function,清除字符串前后的空格。(兼容所有浏览器)

    代码: function trim(str) { if (str && typeof str === "string") { return str.replace( ...

  5. DLib库Base64编解码示例

    代码 #include <iostream> #include <fstream> #include <sstream> #include <string&g ...

  6. Window查看系统激活状态

    Window小技巧 #快捷键 Win+G --录像 psr --问题记录器 #查看系统激活信息 WIN键+R调出运行框,在运行框中cmd winver 回车后就能看到当前系统的版本 slmgr.vbs ...

  7. iOS中判断网络是否联网

    #import "AppDelegate.h" #import "ViewController.h" #import "Reachability.h& ...

  8. Inside NGINX: How We Designed for Performance & Scale

    NGINX leads the pack in web performance, and it’s all due to the way the software is designed. Where ...

  9. 可扩展的Web系统和分布式系统(Scalable Web Architecture and Distributed Systems)

    Open source software has become a fundamental building block for some of the biggest websites. And a ...

  10. nullpointerxception——处理思路

    概念: 1.所谓的指针,就是java中的对象的引用.比如String s;这个s就是指针.2.所谓的空指针,就是指针的内容为空.比如上面的s,如果令它指向null,就是空指针.3.所谓的空指针异常,就 ...