zoukankan      html  css  js  c++  java
  • 并发测试 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. ", duration);
    return count * 500 / duration;
    }
    }
    
    
  • 相关阅读:
    让你少奋斗10年的工作经验
    POJ Exponentiation解题
    数据结构树和二叉树
    语句摘录
    ACM解题报告格式
    编程规范
    数据结构图
    Java学习之二Java反射机制
    使用Python正则表达式提取搜索结果中的站点
    toj 1702 A Knight's Journey
  • 原文地址:https://www.cnblogs.com/xmanblue/p/7448863.html
Copyright © 2011-2022 走看看