首先,我們使用okhttp,寫一個接口調用請求,如下:
private static void postAsync() throws IOException { OkHttpClient client = new OkHttpClient(); final String url = "yourUrl"; RequestBody formBody = new FormBody.Builder() .add("phone", "136XXXXXXXX") .add("verificationCode", "1234") .build(); Request request = new Request.Builder() .url(url) .post(formBody) .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ System.out.println(response.body().toString()); }else{ System.out.println(response); } } }); }
然后,我們寫一個Runnable的實現類
ublic class Task implements Runnable {private CyclicBarrier cyclicBarrier; private int count; public Task(CyclicBarrier cyclicBarrier,int count) { this.cyclicBarrier = cyclicBarrier; this.count = count; } @Override public void run() { try { // 等待所有任務准備就緒 cyclicBarrier.await(); //測試路徑 postAsync(); cyclicBarrier.await(); } catch (Exception e) { System.out.println("出現超時的線程"+count); e.printStackTrace(); } }
最后,我們寫一個調用方法
public static void multiRuntime(int count){ int z =0; while(true) { z++; //線程池准備 CyclicBarrier cyclicBarrier = new CyclicBarrier(count); ExecutorService executorService = Executors.newFixedThreadPool(count); long now = System.currentTimeMillis();//開始時間 for (int i = 0; i < count; i++) { executorService.execute(new Task(cyclicBarrier, i)); } executorService.shutdown(); while (!executorService.isTerminated()) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } long end = System.currentTimeMillis();//結束時間 System.out.println("第" + z + "批總共耗時!---------" + (end - now));//總共耗時 } }