package com.expai.utils;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.log4j.Logger;
public class BingfaTest {
protected static final Logger LOG = Logger.getLogger(BingfaTest.class);
private static BingfaTest binfaTest = new BingfaTest();
public static BingfaTest getInstance() {
return binfaTest;
}
//count为启动线程的个数,httpUrl为请求的url,para为需要传的参数
public void exeThread(int count,String httpUrl,String para){
CyclicBarrier cyclicBarrier = new CyclicBarrier(count);
ExecutorService executorService = Executors.newFixedThreadPool(count);
for (int i = 0; i < count; i++)
executorService.execute(new BingfaTest().new Task(cyclicBarrier,httpUrl,para));
//执行后不再执行新任务shutdown,
executorService.shutdown();
//当线程池的工作队列中的所有任务执行完毕,executorService.isTerminated()方法就会返回true。
while (!executorService.isTerminated()) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class Task implements Runnable {
private CyclicBarrier cyclicBarrier;
private String httpUrl;
private String para;
public Task(CyclicBarrier cyclicBarrier,String httpUrl,String para) {
this.cyclicBarrier = cyclicBarrier;
this.httpUrl=httpUrl;
this.para=para;
}
@Override
public void run() {
try {
// 等待所有任务准备就绪
cyclicBarrier.await();
// 测试内容
URL url =new URL(httpUrl+para);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
//组织提交信息
PrintWriter out = new PrintWriter(connection.getOutputStream());
out.print(para);
out.flush();
//获得返回信息
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line=null;
//返回的参数拼接成字符串
StringBuffer content = new StringBuffer();
while((line=in.readLine())!=null){
content.append(line);
}
in.close();
LOG.info("返回数据====="+content.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
java线程测试高并发
最新推荐文章于 2024-09-25 00:04:44 发布