package com.example.mmd;
import java.net.URL;
import java.net.URLConnection;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
public class Demo {
// 总的请求个数
public static final int requestTotal =1000;
// 同一时刻最大的并发线程的个数
public static final int concurrentThreadNum =20;
public static void main(String[] args)throws Exception {
ExecutorService executorService = Executors.newCachedThreadPool();
CountDownLatch countDownLatch =new CountDownLatch(requestTotal);
Semaphore semaphore =new Semaphore(concurrentThreadNum);
for (int i =0; i<requestTotal; i++) {
executorService.execute(() -> {
try {
semaphore.acquire();
String result =connect();
System.out.println("result:{}." + result);
semaphore.release();
}catch (InterruptedException e) {
System.out.println("exception" + e);
}catch (Exception e) {
e.printStackTrace();
}
countDownLatch.countDown();
});
}
countDownLatch.await();
executorService.shutdown();
System.out.println("执行完成");
}
public static String connect()throws Exception {
//测试接口
final String host ="更换自己的接口!";
URL url =new URL(host);
URLConnection urlConnection = url.openConnection();
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.connect();
System.out.println(urlConnection.getInputStream());;
return urlConnection.getInputStream().toString();
}
}