文档章节

java模拟并发测试

 小艺术家被占用了
发布于 2014/12/02 16:14
字数 219
阅读 36
收藏 0

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.Semaphore;


import net.sf.json.JSONObject;


import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.entity.StringEntity;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.util.EntityUtils;


/**

 * ClassName: HttpClientTest <br/>

 * Function: TODO ADD FUNCTION. <br/>

 * @version 

 * @since  JDK 1.6

 */

public class HttpClientTest {

  private static int thread_num = 200; // 线程数

    private static int client_num = 500; // 执行程序次数

  

    public static void main(String[] args) {  

         DefaultHttpClient httpclient = new DefaultHttpClient();

        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);

                        

                        /*---------------------具体业务逻辑 begin------------------------*/

                        String host = "";


                        HttpPost post = new HttpPost(host);

                        

                        //配置json参数

                        JSONObject params = new JSONObject();  

                        params.put("aa", "11");  

                        params.put("bb", "22");  

                        params.put("cc", "33"+NO);

                        StringEntity s = new StringEntity(params.toString());

                        

                        //设置编码格式

                        s.setContentEncoding("UTF-8");

                        //发送json数据需要设置contentType

                        s.setContentType("application/json");  

                        post.setEntity(s);  

                        HttpResponse res = httpclient.execute(post); 

                        

                        //httpstatus = 200

                        if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){  

                            String result = EntityUtils.toString(res.getEntity());// 返回json格式:

                            JSONObject response = null;  

                            response = JSONObject.fromObject(result);

                            //输出返回结果

                            System.out.println(response.toString());

                        }

                        //释放链接

                        EntityUtils.consume(res.getEntity());

                        

                        /*---------------------具体业务逻辑 end------------------------*/

                        

                        semp.release();  

                    } catch (Exception e) {  

                        e.printStackTrace();  

                    }  

                }  

            };  

            exec.execute(run);  

        }  

        exec.shutdown();  

    }

}


© 著作权归作者所有

粉丝 4
博文 21
码字总数 4096
作品 0
黄浦
私信 提问
java多线程系列:通过对战游戏学习CyclicBarrier

CyclicBarrier是java.util.concurrent包下面的一个工具类,字面意思是可循环使用(Cyclic)的屏障(Barrier),通过它可以实现让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一...

huangzd
2018/01/06
0
0
JMeter学习-001-JMeter初识

Apache JMeter是Apache组织开发的基于Java的开源压力测试工具(个人发现也可用于接口测试)。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试...

拎壶冲冲冲
2018/05/29
0
0
为什么用 Java—— 一个 Python 程序员告诉你

来源:董老师在硅谷 这篇文章专门给程序员写的,普通读者慎入。原作者:Kevin Sookocheff 译者:Celia Zhen,原文点击文末链接。 每当我告诉别人我一直在用Java工作时,大家的反应都是: “纳...

oschina
2016/03/19
59.2K
84
golang和java的http性能对比

公司要重构一个统计项目,统计部分要提供一个web收数的接口,因为统计系统的日志量十分大,所以对web服务的性能要求很严格,在技术选择的背景下做了golang和java的性能对比. 测试环境: mac pro 1...

sundy-li
2015/01/12
0
1
深入ThreadLocal的内部机制

早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal并不是一个T...

yqbboy
2012/10/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 带这么多钱,你要泡我吗

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :白给?#今日歌曲推荐# 分享Lana Del Rey的单曲《Yayo》: 《Yayo》- Lana Del Rey 手机党少年们想听歌,请使劲儿戳(这里) @红薯...

小小编辑
28分钟前
87
5
搭建tftp服务

前言: 最近整理一些以前的学习笔记。 过去都是存储在本地,此次传到网络留待备用。 TFTP服务: TFTP:Trivial File Transfer Protocol 不重要文件传输协议 主要用来传送小文件,不支持认证和...

迷失De挣扎
今天
4
0
rest 的理解

rest:表现层状态转移。 什么是restful协议?https://en.wikipedia.org/wiki/Representational_state_transfer 使用restful的好处。 Rest是一种体系结构样式,他定义了一组用于创建web服务的...

xiaoxiao_go
今天
5
0
聊聊spring cloud的CachingSpringLoadBalancerFactory

序 本文主要研究一下spring cloud的CachingSpringLoadBalancerFactory CachingSpringLoadBalancerFactory spring-cloud-openfeign-core-2.2.0.M1-sources.jar!/org/springframework/cloud/o......

go4it
昨天
8
0
一篇文章搞定——JDK8中新增的StampedLock

一、StampedLock类简介 StampedLock类,在JDK1.8时引入,是对读写锁ReentrantReadWriteLock的增强,该类提供了一些功能,优化了读锁、写锁的访问,同时使读写锁之间可以互相转换,更细粒度控...

须臾之余
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部