package com.concurrent;
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.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
public class ConcurrentTest {
private static int thread_num = 400;
private static int client_num = 400; private static int record_num = 577;
private static String[] fpdm = new String[record_num];
private static String[] fphm = new String[record_num];
private static String fpzldm = "00";
private static String yhxm = "";
private static String sfzh = "";
private static String lxdh = "";
private static String yzm = "1234";
static {
try {
//读取测试数据
InputStreamReader isr = new InputStreamReader(new FileInputStream(new File("D:\\prj\\concurrent\\bin\\com\\nns\\fplrxx.txt")), "utf-8");
BufferedReader buffer = new BufferedReader(isr);
String line = "";
int count = 0;
while ((line = buffer.readLine()) != null) {
fpdm[count] = line.split("@")[0];
fphm[count] = line.split("@")[1];
count++;
}
System.out.println("总测试数据个数是:"+count);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//创建缓冲线程池,用于执行多线程
ExecutorService exec = Executors.newCachedThreadPool();
//thread_num个线程可以同时访问
final Semaphore semp = new Semaphore(thread_num);
//模拟client_num个客户端访问
for (int index = 0; index < client_num; index++) {
final int NO = index;
//此处是请求的参数查询串
final String para = "fpzldm="+fpzldm+"&fpdm="+fpdm[index]+"&fphm="+fphm[index]+"&yhxm="+yhxm+"&sfzh="+sfzh+"&lxdh="+lxdh+"&yzm="+yzm;
//run方法内是线程执行的内容
Runnable run = new Runnable() {
public void run() {
try {
// 获取许可
semp.acquire();
System.out.println("第: " + NO+" 个开始");
String host = "http://localhost:8088/prj/action.do?"; //此处填写供测试的URL
URL url = new URL(host);
//打开连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
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);
System.out.println("第:" + NO + " 个完毕");
// 释放许可
semp.release();
} catch (Exception e) {
e.printStackTrace();
}
}
};
//执行线程
exec.execute(run);
}
// 退出线程池
exec.shutdown();
}
}