java json socket_Java 使用Socket实现多线程发送 POST json 请求

import java.io.*;import java.net.*;importjava.nio.charset.StandardCharsets;import java.util.*;importjava.util.concurrent.ConcurrentHashMap;importjava.util.concurrent.CountDownLatch;importnet.minidev.json.JSONObject;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;public classPostSender {private static final Logger log = LoggerFactory.getLogger(PostSender.class);final String targetHost = "127.0.0.1";final String requestUrl = "/kill/kill/execute/unlock";final int portBegin = 21000;final int threadNum = 10000;public voidthreadTest() {

CountDownLatch cdLatch= newCountDownLatch(threadNum);

Map responseTimeMap = new ConcurrentHashMap<>();long start =System.currentTimeMillis();for (int i = 1; i <= threadNum; i++) {

Thread thread= new Thread(newMyRunnable(i, responseTimeMap, cdLatch));

thread.start();

}try{

cdLatch.await();

}catch(InterruptedException e) {

e.printStackTrace();

}long end =System.currentTimeMillis();//System.out.println("\nall response time:");

double timesum = 0.0;for(Integer uid :

responseTimeMap.keySet()) {double time =responseTimeMap.get(uid);

timesum+=time;//System.out.printf("%.0f\n", time);

}

Double avgTime= timesum /responseTimeMap.keySet().size();

System.out.println("\ntotal time: " + (end -start));

System.out.println("successful connection: " +responseTimeMap.size());

System.out.printf("avg response time: %.0f\n", avgTime);

}public static voidmain(String[] args) {

PostSender ps= newPostSender();

ps.threadTest();

}class MyRunnable implementsRunnable {private final intuserId;private final MaptimeMap;private finalCountDownLatch latch;public MyRunnable(int userId, MaptimeMap, CountDownLatch cdLatch) {this.userId =userId;this.timeMap =timeMap;this.latch =cdLatch;

}

@Overridepublic voidrun() {

socketPostRaw();

latch.countDown();

}public voidsocketPostRaw() {try (Socket socket = new Socket(InetAddress.getLocalHost(), 8092);          // Socket socket = new Socket(InetAddress.getLocalHost(), 8092, InetAddress.getLocalHost(), portBegin + userId);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值