通过java代码 测试高并发、服务器

话不多少 上代码


Maven 坐标


 
 
        org.apache.httpcomponents
        httpclient
        4.5.2

    




package novel1;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import java.util.concurrent.CountDownLatch;

import org.apache.http.Consts;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;

public class testConnect {
	public static void main(String[] args) throws InterruptedException {
		//用于分线程执行完 开始执行主线程 我试的没用
	  // CountDownLatch count = new CountDownLatch(500);
		//http连接池
		CloseableHttpClient httpClient;
		PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
		cm.setMaxTotal(500);
		cm.setDefaultMaxPerRoute(20);
		cm.setDefaultMaxPerRoute(50);
		httpClient = HttpClients.custom().setConnectionManager(cm).build();
		//开启线程
		long start = System.currentTimeMillis();
		for (int i = 0; i < 500; i++) {
			myThread1 myThread = new myThread1(i,httpClient);
			Thread thread = new Thread(myThread);
			thread.start();
		}
		// 分线程主线程结束
		//count.await();
		//Thread.sleep(1000);
		long end = System.currentTimeMillis();
		System.out.println(end - start);

	}

}

//定义内部变量线程
class myThread1 implements Runnable{

	//传入的参数可以自定义
	private int i;
	CloseableHttpClient httpClient;
	public myThread1() {
	}
	
	public myThread1(int i,CloseableHttpClient httpClient) {
		super();
		this.i = i;
		this.httpClient = httpClient;
	}

		
	//线程要执行的方法
	@Override
	public void run() {
		//传入的url
		String url = "https://www.baidu.com/";
		HttpPost get = new HttpPost(url);
		
		//设置表单数据 我们是post请求  get的直接url后加参数
		List params = new ArrayList();
		params.add(new BasicNameValuePair("name", "" + i));
		params.add(new BasicNameValuePair("unit", "" + i));
		params.add(new BasicNameValuePair("phone", "" + i));
		params.add(new BasicNameValuePair("jobTitle", "" + i));
		params.add(new BasicNameValuePair("email", "" + i));
		// 转换参数并设置编码格式
		get.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8));
		try {
			//发送请求
			httpClient.execute(get);
			//System.out.println(i); //无法测试什么时候分线程执行完 所以每个分线程执行完打印  但打印不全
		} catch (ClientProtocolException e) {
			System.out.println("fail");
			e.printStackTrace();
		} catch (IOException e) {
		System.out.println("fail1");
			e.printStackTrace();
		}
		
	}
	
}


不过不能确定什么时候执行完 单测试插入数据库 通过数据库读写数量 可判断并发数量

有会的 请留言 小弟不胜感激



你可能感兴趣的:(javaUntil)