- 浏览: 262388 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (183)
- oracle (4)
- informix (1)
- web开发 (6)
- java (49)
- hibernate (1)
- hadoop (1)
- spring (23)
- 非技术 (8)
- ibatis2 (5)
- Linux (6)
- tomcat (14)
- nginx (7)
- dubbo (3)
- myibatis (7)
- webservice 开发 (2)
- mysql (2)
- svn (2)
- redis (7)
- 分布式技术 (17)
- zookeeper (2)
- kafka (2)
- velocity (1)
- maven (7)
- js (1)
- freemarker (1)
- Thymeleaf (3)
- 代码审计 (1)
- ibatis3 (1)
- rabbitmq (1)
最新评论
package com.gpcsoft.hct.epp.egp.thread;
import com.gpcsoft.hct.epp.egp.HttpClientBailApi;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CyclicBarrier;
/**
* @Auther: gaojp
* @Date: 2019/5/5 17:14
* @Description:
*/
public class ThreadTest {
public static Boolean printStatusInfo = false;
public void mutiThread(){
long start = Calendar.getInstance().getTimeInMillis();
//线程数量
int num =100;
Boolean printStatus =false;
//计数
CountDownLatch countDownLatch = new CountDownLatch(num);
//停车栅栏
CyclicBarrier cyclicBarrier = new CyclicBarrier(num);
for (int i = 0; i <num ; i++) {
String mobile ="200"+i;
String tag =mobile+"_"+ Calendar.getInstance().getTimeInMillis();
new Thread(new ThreadNum(countDownLatch, mobile,tag,cyclicBarrier,start,printStatus)).start();
countDownLatch.countDown();
}
}
private class ThreadNum implements Runnable {
private CountDownLatch countDownLatch;
private CyclicBarrier cyclicBarrier;
private long start;
private boolean printStatus;
private String mobile;
private String tag;
private ThreadNum(CountDownLatch countDownLatch, String mobile, String tag) {
this.countDownLatch = countDownLatch;
this.mobile = mobile;
this.tag = tag;
}
private ThreadNum(CountDownLatch countDownLatch, String mobile, String tag,CyclicBarrier cyclicBarrier) {
this.countDownLatch = countDownLatch;
this.mobile = mobile;
this.tag = tag;
this.cyclicBarrier =cyclicBarrier;
}
private ThreadNum(CountDownLatch countDownLatch, String mobile, String tag,
CyclicBarrier cyclicBarrier,boolean printStatus) {
this.countDownLatch = countDownLatch;
this.mobile = mobile;
this.tag = tag;
this.cyclicBarrier =cyclicBarrier;
this.printStatus = printStatus;
}
private ThreadNum(CountDownLatch countDownLatch, String mobile, String tag,
CyclicBarrier cyclicBarrier,long start,boolean printStatus) {
this.countDownLatch = countDownLatch;
this.mobile = mobile;
this.tag = tag;
this.cyclicBarrier =cyclicBarrier;
this.start = start;
this.printStatus = printStatus;
}
@Override
public void run() {
try {
//等待所有线程准备完毕后,同时访问接口
countDownLatch.await();
Map<String,String> req = new HashMap<String,String>();
req.put("username","little");
req.put("password","1992");
Iterator<String> item = req.values().iterator();
StringBuffer sb = new StringBuffer();
while (item.hasNext()){
sb.append(item.next());
}
System.out.println(sb.toString());
String url ="http://localhost:9090/shiro/loginUser";
HttpClientBailApi api = new HttpClientBailApi();
try {
String string = api.postStringApi(url, req);
System.out.println("result:::"+string.substring(0,10)+"___"+mobile+"-"+tag);
}catch (Exception ex){
ex.printStackTrace();
}
//等待线程运行完成
int awaitNum = cyclicBarrier.await();
long end = Calendar.getInstance().getTimeInMillis();
if(!printStatusInfo) {
printStatusInfo = true;
System.out.println(awaitNum + "运行时间::" + (end - start));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
ThreadTest test = new ThreadTest();
test.mutiThread();
}
}
发表评论
-
aop实现通用缓存,并且防止缓存击穿
2019-09-16 15:10 702实现代码在附件中 1.自定义注解文件 package sgn ... -
通过模板的方式解决缓存被击穿的问题
2019-04-15 11:35 3751. package gjp.tools; import c ... -
Rsa 加解密算法
2019-03-18 10:27 330package gjp.tools; /** * @Aut ... -
httpClient 使用http协议上传文件
2018-10-09 15:58 3061<dependency> <grou ... -
httpClient 使用HTTPS 协议上传文件
2018-09-30 14:50 2359<dependency> <group ... -
防止 XML外部实体注入
2018-09-18 17:03 7076方式一 DocumentBuilderFactory dbf ... -
httpClient 的https 调用
2018-06-20 21:07 738package com.gpcsoft.xjmodule.ut ... -
猎狗方式调用接口
2017-09-27 08:36 601package boce.hit.dog; import j ... -
netty 实现长连接
2017-08-24 09:52 12701.server 端信息 package com.boce.n ... -
netty 开发入门
2017-08-22 14:30 6401.准备jar <properties> & ... -
nio 编程实例
2017-08-16 14:15 5721.编写服务端 package com.boce.nio.s ... -
jwt 生成token 和解析token
2017-06-06 16:45 5872<jjwt.version>0.6.0</j ... -
实现Java高并发隔离 模拟
2017-05-08 10:34 476package org; import java.util. ... -
java 命令
2017-04-20 16:42 354java 命令: java -Djava.ext.dirs ... -
nio 通讯
2017-04-01 15:41 490nio 服务端: package nio.study.se ... -
HashMap 便利时不按照输入顺序输出
2017-03-27 17:11 1906使用:hashmap传输数据时,便利map中的数据时,发现 ... -
使用Lock,对不同商品加锁
2017-03-13 10:52 1218package com.boce.gbkutf; ... -
json 转泛型的集合类
2017-03-07 16:21 1186package com.boce.test; ... -
httpclient4.5 使用post方式提交请求
2017-03-03 11:00 1963private RequestConfig req ... -
GBK与UTF-8 字符串互转
2017-02-24 11:17 2148package com.cloud.tools; i ...
相关推荐
课 程 实 验 报 告 课程名称: 线程控制实验 ... 6、让单线程程序睡眠四秒钟、多线程程序各子线程睡一秒的条件下(两程序的 总睡眠时间相同),对比执行结果; 7、分析两次对比结果的差异,写出自己的见解。 三、运行
6、让单线程程序睡眠四秒钟、多线程程序各子程序睡一秒的条件下(两个程序总的睡眠时间相同),对比执行结果; 操作系统实验报告-全文共5页,当前为第1页。 7、分析两次对比结果的差异,写出自己的见解。 四、实验...
实例055 如何创建多线程程序 实例056 如何创建可独立执行程序 实例057 如何编写单文档应用程序 实例058 如何编写多文档应用程序 实例059 如何编写COM服务器程序 实例060 如何编写COM客户端程序 实例061 如何...
实例055 如何创建多线程程序 实例056 如何创建可独立执行程序 实例057 如何编写单文档应用程序 实例058 如何编写多文档应用程序 实例059 如何编写COM服务器程序 实例060 如何编写COM客户端程序 实例061 如何...
实例055 如何创建多线程程序 实例056 如何创建可独立执行程序 实例057 如何编写单文档应用程序 实例058 如何编写多文档应用程序 实例059 如何编写COM服务器程序 实例060 如何编写COM客户端程序 实例061 如何...
Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解 决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java 的开发工具中...
主要内容包括:用户界面设计、文档应用程序设计、图形程序设计、文件I/O与串行化程序设计、多媒体程序设计、系统控制与注册表、数据库技术程序设计、网络、通信技术程序设计、打印程序设计、线程和进程程序设计、...
主要内容包括:用户界面设计、文档应用程序设计、图形程序设计、文件I/O与串行化程序设计、多媒体程序设计、系统控制与注册表、数据库技术程序设计、网络、通信技术程序设计、打印程序设计、线程和进程程序设计、...
主要内容包括:用户界面设计、文档应用程序设计、图形程序设计、文件I/O与串行化程序设计、多媒体程序设计、系统控制与注册表、数据库技术程序设计、网络、通信技术程序设计、打印程序设计、线程和进程程序设计、...
04、使用多线程发包,在XP下最多可以同时开2000个线程发包,发包速度快,流量大。在千兆网卡上可以超过15M/s的速度。 05、自动统计发包时间,计算每秒发包数量,流量。 06、可以设置发包的时间间隔,最少到1...
能统计每匹马所跑完所需的总时间,最终的名次。 3. 支持用户对马进行投注,并记录输赢,保存到文件或数据库中。 b.从这个题目来分析,要做的主要有四大点: 1.第一点就是要设计用户登录赛马的页面,登陆后才能进行...
0149 使用ForegroundTask函数检测线程是否运行 96 第5章 字符与字符串处理技术 99 5.1 ASCII码与编码转换 100 0150 如何获得汉字的区位码 100 0151 通过区位码获取汉字 100 0152 根据ASCII码获得字母 ...
说明: 指定多个监听程序的地址是分别指定的, 还是用一个 ADDRESS_LIST 字符串指定。如果该值为 TRUE, MTS_LISTENER_ADDRESS 参数可被指定为: (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(PORT=5000)(HOST=zeus)) ...
ASP.Net应用程序的多进程模型 NET委托:一个C#睡前故事 [推荐] - [原创] Microsoft .NET策略及框架概述 卸载Class? Web Form 窗体 如何实现web页面的提示保存功能 在ASP.Net中两种利用CSS实现多界面的方法 如何在...
17.5 在多线程环境中使用SWIG生成的模块 603 17.6 用PySequence_Fast将Python序列转为 C数组 604 17.7 用迭代器逐个访问Python序列的元素 608 17.8 从Python可调用的C函数中返回None 611 17.9 用gdb调试动态载入...