import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; public class ConcurrentTest { private static int thread_num = 200; private static int client_num = 460; private static Map keywordMap = new HashMap(); static { try { InputStreamReader isr = new InputStreamReader(new FileInputStream( new File("clicks.txt")), "GBK"); BufferedReader buffer = new BufferedReader(isr); String line = ""; while ((line = buffer.readLine()) != null) { keywordMap.put(line.substring(0, line.lastIndexOf(":")), ""); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { int size = keywordMap.size(); // TODO Auto-generated method stub ExecutorService exec = Executors.newCachedThreadPool(); // 50个线程可以同时访问 final Semaphore semp = new Semaphore(thread_num); // 模拟2000个客户端访问 for (int index = 0; index < client_num; index++) { final int NO = index; Runnable run = new Runnable() { public void run() { try { // 获取许可 semp.acquire(); System.out.println("Thread:" + NO); String host = "http://10.99.23.42:7001/KMQueryCenter/query.do?"; String para = "method=getQueryResult&pageNum=1&pageSize=5&" + "queryKeyWord=" + getRandomSearchKey(NO) + "&questionID=-1&questionIdPath=-1&searchType=1" + "&proLine=&proSeries=&proType=" + NO; System.out.println(host + para); URL url = new URL(host);// 此处填写供测试的url HttpURLConnection connection = (HttpURLConnection) url .openConnection(); // connection.setRequestMethod("POST"); // connection.setRequestProperty("Proxy-Connection", // "Keep-Alive"); connection.setDoOutput(true); connection.setDoInput(true); PrintWriter out = new PrintWriter(connection .getOutputStream()); out.print(para); out.flush(); out.close(); BufferedReader in = new BufferedReader( new InputStreamReader(connection .getInputStream())); String line = ""; String result = ""; while ((line = in.readLine()) != null) { result += line; } // System.out.println(result); // Thread.sleep((long) (Math.random()) * 1000); // 释放 System.out.println("第:" + NO + " 个"); semp.release(); } catch (Exception e) { e.printStackTrace(); } } }; exec.execute(run); } // 退出线程池 exec.shutdown(); } private static String getRandomSearchKey(final int no) { String ret = ""; int size = keywordMap.size(); // int wanna = (int) (Math.random()) * (size - 1); ret = (keywordMap.entrySet().toArray())[no].toString(); ret = ret.substring(0, ret.lastIndexOf("=")); System.out.println("\t" + ret); return ret; } }
相关推荐
Java 模拟线程并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发
java多进程并发 读文件 测试代码,适合初学并发控制 的同学
1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。 2.完全的可移植性和100% 纯java。 3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。 4.完全多线程 ...
通过python与ffmpeg结合使用,可生成进行视频点播、直播的压力测试脚本。可支持不同类型的视频流,比如rtmp或者hls形式。 通过如下方式执行脚本:python multiRealPlay.py [rtmp|http] [thread counts] [interval ...
windows下模拟高并发来进行负载测试工具。一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
《Java7并发编程实战手册》书中实例代码,有此书的TX就直接在此下载吧。
测试自己架设的本地WEB服务器能承受能力 不得用于局域网以外以及别人的服务器
非常好的一个模拟tcp并发,在有限硬件里模拟出大并发的网络环境测试,是学习网络和tcp开发的绝好例子!
《实战Java高并发程序设计》 第二版随书代码
java并发编程实战源码 附有本书所有源码,maven 导入 eclipse或idea
代码如下:#!/bin/bash#********************************##并发后台运行fun ##for wanggy 2012-01-25 ##note: ##fun_num fun函数后台运行次数 ##sql_num 每个函数sql运行次数 ##******************************...
实战Java高并发程序设计-随书代码 完整版
Java并发编程的艺术 作者:方腾飞 魏鹏 程晓明 著 丛书名:Java核心技术系列 出版日期 :2015-07-25 ISBN:978-7-111-50824-3 第1章介绍Java并发编程的挑战,向读者说明进入并发编程的世界可能会遇到哪些问题,以及如何...
java selector 测试并发.多线程并发。
java并发编程pdf文档第二部分:Java并发编程实战.pdf、Java多线程编程核心技术.pdf、实战Java高并发程序设计.pdf
Java高并发编程代码(Netty NIO 实例)
自从java创建以来就已经支持并发的理念,如线程和锁。这篇指南主要是为帮助java多线程开发人员理解并发的核心概念以及如何应用这些理念。本文的主题是关于具有java语言风格的Thread、synchronized、volatile,以及...
NULL 博文链接:https://gjp014.iteye.com/blog/2373086
第7章主要介绍了高并发框架Akka的基本使用方法,并使用Ak:ka框架实现了 个简单的粒子群算法, 模拟超高并发的场景。第8章介绍了使用Eclipse进行多线程调试的方法, 并演示了通过Eclipse进行多线程调试重现ArrayList...
本文档主要系统性的总结和阐述了与Java并发相关的知识点