java线程测试高并发

本文介绍了一个使用Java实现的简单并发测试工具,该工具通过多线程的方式模拟对指定URL的压力测试,并展示了如何发送HTTP请求及处理响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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();
}
}
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值