package com.expai.utils;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;
import java.net.HttpURLConnection;import java.net.URL;
import java.util.concurrent.CyclicBarrier;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import org.apache.log4j.Logger;public class BingfaTest {
protected static final Logger LOG = Logger.getLogger(BingfaTest.class); private static BingfaTest binfaTest = new BingfaTest(); public static BingfaTest getInstance() { return binfaTest; }
//count为启动线程的个数,httpUrl为请求的url,para为需要传的参数 public void exeThread(int count,String httpUrl,String para){ CyclicBarrier cyclicBarrier = new CyclicBarrier(count);
ExecutorService executorService = Executors.newFixedThreadPool(count); for (int i = 0; i < count; i++)
executorService.execute(new BingfaTest().new Task(cyclicBarrier,httpUrl,para)); //执⾏后不再执⾏新任务shutdown, executorService.shutdown();
//当线程池的⼯作队列中的所有任务执⾏完毕,executorService.isTerminated()⽅法就会返回true。 while (!executorService.isTerminated()) { try {
Thread.sleep(10);
} catch (InterruptedException e) { e.printStackTrace(); } } }
public class Task implements Runnable { private CyclicBarrier cyclicBarrier; private String httpUrl; private String para;
public Task(CyclicBarrier cyclicBarrier,String httpUrl,String para) { this.cyclicBarrier = cyclicBarrier; this.httpUrl=httpUrl; this.para=para; }
@Override public void run() { try {
// 等待所有任务准备就绪 cyclicBarrier.await(); // 测试内容
URL url =new URL(httpUrl+para);
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); //组织提交信息
PrintWriter out = new PrintWriter(connection.getOutputStream()); out.print(para); out.flush(); //获得返回信息
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line=null;
//返回的参数拼接成字符串
StringBuffer content = new StringBuffer(); while((line=in.readLine())!=null){ content.append(line); }
in.close();
LOG.info(\"返回数据=====\"+content.toString());
LOG.info(\"返回数据=====\"+content.toString()); } catch (Exception e) { e.printStackTrace(); } } }}
因篇幅问题不能全部显示,请点此查看更多更全内容