通過java程式碼 測試高併發、伺服器
阿新 • • 發佈:2019-02-01
話不多少 上程式碼
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(); } } }
不過不能確定什麼時候執行完 單測試插入資料庫 通過資料庫讀寫數量 可判斷併發數量
有會的 請留言 小弟不勝感激