zoukankan      html  css  js  c++  java
  • java并发压力测试

    package com.test;

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.io.UnsupportedEncodingException;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Semaphore;

    public class Test {
     private static int thread_num=150;
     private static int client_num=500;
     private static Map keywordMap=new HashMap();
     
     static {
      InputStreamReader isr;
      try {
       isr = new InputStreamReader(new FileInputStream(new File("D:/clicks.txt")),"GBK");
       BufferedReader buffer=new BufferedReader(isr);
       String line="";
       while ((line=buffer.readLine())!=null) {
        keywordMap.put(line.substring(0, line.lastIndexOf(":")),"");      
       }
      } catch (Exception e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      
     }

     public static void main(String[] args) {
      int size=keywordMap.size();
      ExecutorService exec=Executors.newCachedThreadPool();
      // 50个线程可以同时访问
      final Semaphore semp=new Semaphore(thread_num);
      // 模拟2000个客户端访问
      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);
         //System.out.println("semp:" + semp);
         String host = "http://192.168.30.31:8088/AndroidWebService";
         
         //System.out.println(host + para);
         System.out.println("host--"+host);
         URL url=new URL(host);// 此处填写供测试的url
         HttpURLConnection connection=(HttpURLConnection)url.openConnection();
         //connection.setRequestMethod("POST");
         //connection.setRequestProperty("Proxy-Connection","Keep-Alive");
         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("result--"+result);
         // Thread.sleep((long) (Math.random()) * 1000);
         // 释放
         System.out.println("第:" + NO + " 个");
         semp.release();
         
         } catch (Exception e) {
          e.printStackTrace();
         }
        }
       };
       exec.execute(run);
      }
      // 退出线程池
      exec.shutdown();
     }
     private static String getRandomSearchKey(final int no){
      String ret="";
      int size=keywordMap.size();
      // int wanna = (int) (Math.random()) * (size - 1);
      ret = (keywordMap.entrySet().toArray())[no].toString();
      ret = ret.substring(0, ret.lastIndexOf("="));
      System.out.println("ret--"+" " + ret);
      return ret;
     }

    }

     

     

    http://www.blogjava.net/alinglau36/archive/2010/05/28/322118.html

     

  • 相关阅读:
    Two strings CodeForces
    Dasha and Photos CodeForces
    Largest Beautiful Number CodeForces
    Timetable CodeForces
    Financiers Game CodeForces
    AC日记——整理药名 openjudge 1.7 15
    AC日记——大小写字母互换 openjudge 1.7 14
    AC日记——将字符串中的小写字母换成大写字母 openjudge 1.7 13
    AC日记——加密的病历单 openjudge 1.7 12
    AC日记——潜伏着 openjudge 1.7 11
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7480461.html
Copyright © 2011-2022 走看看