import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; public class Test { //200个线程可以同时访问 private static int thread_num = 200; //模拟1000个客户端访问 private static int client_num = 1000; //要测试的地址 private static String test_url="http://115.28.89.134/"; public static void main(String[] args) { ExecutorService exec = Executors.newCachedThreadPool(); final Semaphore semp = new Semaphore(thread_num); for (int index = 0; index < client_num; index++) { final int NO = index; Runnable run = new Runnable() { public void run() { try { // 获取许可 semp.acquire(); System.out.println("Thread:" + NO); String host = test_url; System.out.println(host); URL url = new URL(host); HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.setDoOutput(true); connection.setDoInput(true); PrintWriter out = new PrintWriter(connection.getOutputStream()); out.flush(); out.close(); BufferedReader in = new BufferedReader( new InputStreamReader(connection.getInputStream())); String line = ""; String result = ""; while ((line = in.readLine()) != null) { result += line; } System.out.println("线程"+ NO+":"+result+"test"); // 释放 semp.release(); } catch (Exception e) { e.printStackTrace(); } } }; exec.execute(run); } // 退出线程池 exec.shutdown(); } }
运行结果不贴出来了太多了,自己写个简单的测试吧