java测试并发类

/**
 * ConTest.java
 * 版权所有(C) 2012 
 * 创建:cuiran 2012-07-12 10:12:14
 */
package com.wpndemo.test;
import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

import java.util.Map;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.Semaphore;

public class ConTest{
	

private static int thread_num = 10;

private static int client_num = 10;

private  static  int num=0;

public static int getNo(){
	num=num+1;
	System.out.println(num);
	return num;
}


private static Map keywordMap = new HashMap();

	static {
	
//	try {
//	
//	InputStreamReader isr = new InputStreamReader(new FileInputStream(
//	
//			new File("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) {
//	
//		e.printStackTrace();
//	
//	}
	
}

public static void main(String[] args) {

		int size = keywordMap.size();
		
		// TODO Auto-generated method stub
		
		ExecutorService exec = Executors.newCachedThreadPool();
		
		keywordMap.put("test01", "38338");
		keywordMap.put("test02", "38339");
		keywordMap.put("test03", "38340");
		keywordMap.put("test04", "38341");
		keywordMap.put("test05", "38342");
//		keywordMap.put("test06", "38343");
//		keywordMap.put("test07", "38344");
//		keywordMap.put("test08", "38345");
//		keywordMap.put("test09", "38346");
//		keywordMap.put("test10", "38347");
		// 50个线程可以同时访问
		
		final Semaphore semp = new Semaphore(thread_num);
		
		// 模拟2000个客户端访问
		Set set =keywordMap.keySet();// 
		
		Iterator it=set.iterator();
		  
		   int index=0;
		   
		while(it.hasNext()){
		
			
			
			String userName= (String) it.next();//      
			final String pass=keywordMap.get(userName).toString();//
			
			Runnable run = new Runnable() {
				int NO = ConcurrentTest.num;;
				  
			public void run() {
			
			try {
			
				// 获取许可
				
				semp.acquire();
				
				System.out.println("Thread:" + NO);
				
				String host = "http://192.168.0.137:8080/MessageWeb/messageSrevlet.do?";
				
				String para = "m=reqcalltaxi&id="+pass+"&key=35bc7f25daa881fa0974730276868f12&phone=13401038652&bx=116.311754&by=40.034496&"
				
				+ "bLocation=%E4%B8%8A%E5%9C%B0&bDes=%E5%8C%97%E4%BA%AC%E5%B8%82%E6%B5%B7%E6%B7%80%E5%8C%BA%E4%B8%8A%E5%9C%B03%E8%A1%97%E7%8E%AF%E5%B2%9B%E8%A5%BF%E5%8D%97%E8%A7%92(%E8%BF%91%E4%B8%8A%E5%9C%B0%E7%8E%AF%E5%B2%9B)&"
				
				+ "ex=116.315942&ey=40.05343&eLocation=%E8%A5%BF%E4%BA%8C%E6%97%97&eDes=333%E8%B7%AF%E5%86%85%E7%8E%AF,333%E8%B7%AF%E5%A4%96%E7%8E%AF,392%E8%B7%AF,%E8%BF%90%E9%80%9A114%E8%B7%AF,636%E8%B7%AF&"
				
				+ "time=15&userNum=1&isSalute=1&name=%E6%9C%B1%E5%85%88%E7%94%9F&level=3&credit=-3&bytime=2012-07-12%2016:34:17&type=0¬ifytime=2012-07-12%2016:34:17&s=123456&"
				
				+ "jsoncallback=jQuery16208664285382739452_1342059526704&_=1342059557372";
				
				System.out.println(host + para);
				
				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.print(para);
				
				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);
				
				// Thread.sleep((long) (Math.random()) * 1000);
				
				// 释放
			
				System.out.println("第:" + NO + " 个");
			
				semp.release();
				
				
			} catch (Exception e) {
			
				e.printStackTrace();
			
			}
			
		}
		
	};
		
		exec.execute(run);
		
 }
		
		// 退出线程池
		
		exec.shutdown();

}

	

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuiran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值