1. 程式人生 > >通過java程式碼 測試高併發、伺服器

通過java程式碼 測試高併發、伺服器

話不多少 上程式碼

Maven 座標

 <!-- http球球 -->
  <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.2</version>

    </dependency>


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


不過不能確定什麼時候執行完 單測試插入資料庫 通過資料庫讀寫數量 可判斷併發數量

有會的 請留言 小弟不勝感激