- 浏览: 269103 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (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 788实现代码在附件中 1.自定义注解文件 package sgn ... -
通过模板的方式解决缓存被击穿的问题
2019-04-15 11:35 4041. package gjp.tools; import c ... -
Rsa 加解密算法
2019-03-18 10:27 362package gjp.tools; /** * @Aut ... -
httpClient 使用http协议上传文件
2018-10-09 15:58 3100<dependency> <grou ... -
httpClient 使用HTTPS 协议上传文件
2018-09-30 14:50 2424<dependency> <group ... -
防止 XML外部实体注入
2018-09-18 17:03 7259方式一 DocumentBuilderFactory dbf ... -
httpClient 的https 调用
2018-06-20 21:07 799package com.gpcsoft.xjmodule.ut ... -
猎狗方式调用接口
2017-09-27 08:36 640package boce.hit.dog; import j ... -
netty 实现长连接
2017-08-24 09:52 13071.server 端信息 package com.boce.n ... -
netty 开发入门
2017-08-22 14:30 6641.准备jar <properties> & ... -
nio 编程实例
2017-08-16 14:15 5931.编写服务端 package com.boce.nio.s ... -
jwt 生成token 和解析token
2017-06-06 16:45 5911<jjwt.version>0.6.0</j ... -
实现Java高并发隔离 模拟
2017-05-08 10:34 507package org; import java.util. ... -
java 命令
2017-04-20 16:42 414java 命令: java -Djava.ext.dirs ... -
nio 通讯
2017-04-01 15:41 520nio 服务端: package nio.study.se ... -
HashMap 便利时不按照输入顺序输出
2017-03-27 17:11 1949使用:hashmap传输数据时,便利map中的数据时,发现 ... -
使用Lock,对不同商品加锁
2017-03-13 10:52 1245package com.boce.gbkutf; ... -
json 转泛型的集合类
2017-03-07 16:21 1207package com.boce.test; ... -
httpclient4.5 使用post方式提交请求
2017-03-03 11:00 2012private RequestConfig req ... -
GBK与UTF-8 字符串互转
2017-02-24 11:17 2200package com.cloud.tools; i ...
相关推荐
总的来说,这个“用C#写的多线程`ping`程序”展示了C#在网络编程中的应用,包括多线程技术、`Ping`类的使用、结果统计以及错误处理。这样的程序对于网络管理员和开发者来说是非常有用的工具,能够快速检测网络的连通...
总的来说,"基于socket多线程图片传输程序"项目展示了网络编程的基本原理和技术,涉及了socket通信、多线程处理以及性能监控,这些都是IT专业人员必备的知识点。理解并掌握这些技术对于开发高效、可靠的网络应用程序...
总的来说,这个“java多线程代码行数计数器”利用Java的多线程特性,提高了代码统计的效率,尤其适用于处理大量源代码的情况。尽管存在一些小瑕疵,但其核心功能强大且实用。对于开发者而言,这无疑是一个有助于项目...
6. **异步编程**:虽然多线程可以提高程序并行性,但在UI更新方面,推荐使用异步编程模型,如.NET Framework的`async/await`关键字,这样可以在不阻塞主线程的情况下执行IO密集型任务,保持用户界面的流畅响应。...
在实际运行中,每个线程的睡眠时间和总挂起时间会打印到控制台,同时,主程序会计算出所有线程的总挂起时间,展示多线程环境中的并发行为。 在Java多线程编程中,还需要注意线程安全问题,例如避免数据竞争和死锁。...
然而,需要注意的是,在设计多线程程序时也要充分考虑到线程安全性和资源共享问题,合理使用锁机制来避免数据不一致的问题。此外,随着硬件的发展,未来可能会有更多的处理器核心可用,这将进一步增加多线程技术的...
在实际开发中,我们可能会结合使用这些方法,比如在多线程或多进程环境下,统计每个线程或进程的CPU时间,然后汇总计算,以了解整个程序的CPU利用率。同时,配合其他性能分析工具,如`top`、`htop`、`perf`等,能更...
2. **AsyncTask**:Android提供的一种轻量级的多线程解决方案,适合短时间、频繁运行的任务。它包含三个泛型参数,分别代表后台执行的输入类型、进度类型和结果类型。通过onPreExecute(), doInBackground(), ...
多线程允许程序同时执行多个任务,提高了处理器的利用率,减少了上下文切换的时间开销。 在计算π值的例子中,我们可以使用三种不同的多线程方法: 1. **概率法**:这种方法基于蒙特卡洛模拟,通过随机点落在单位...
在本项目中,"C#打字游戏多线程最新版"是一个基于C#编程语言开发的打字练习软件,其特色在于利用多线程技术来优化程序性能和用户体验。以下将详细介绍C#语言、打字游戏的实现原理以及多线程在该项目中的应用。 C#是...
4. 结果展示:给出了不同线程数下的π计算结果,对比单线程和多线程的运行时间。 5. 性能分析:分析了线程增加对计算速度的影响,可能存在线程创建和销毁开销、上下文切换成本等因素的影响。 6. 优化策略:可能探讨...
此时,SE30会展示程序运行的各项统计数据,包括总执行时间、CPU时间、数据库调用次数等。这些数据对于理解程序的性能至关重要。 3. **识别耗时操作**: 在分析结果中,你可以看到程序执行的各个部分按照时间消耗...
因此,在设计多线程程序时,应该格外注意异常处理。一种常见的做法是在`run()`方法中添加异常处理代码,或者使用`Thread.setUncaughtExceptionHandler()`方法来设置默认的异常处理器。 #### 五、字符流的应用 字符...
实验结果显示,当子线程睡眠时间较短时,多线程程序的总执行时间可能短于单线程。这是因为多线程可以并发执行任务,减少了等待时间。而单线程程序的执行时间受其内部逻辑控制,如睡眠时间。 通过这个实验,我们可以...
在Java编程中,有时我们需要对程序的运行时间进行度量,以便分析性能瓶颈或优化代码。这个"Java实现的耗时统计类"就是为了满足这样的需求而设计的。它可以帮助开发者在执行特定操作前后记录时间,然后计算并输出操作...
3. **clock_t clock()**:它返回程序运行至今CPU使用的总时间,单位是`CLOCKS_PER_SEC`,即每秒的时钟周期数。精度取决于系统定义的CLOCKS_PER_SEC。 4. **DWORD GetTickCount()**:获取系统启动后经过的毫秒数,...
例如,`fork()`函数用于创建新进程,`waitpid()`用于等待子进程结束,`execve()`用于替换当前进程的执行映像,以及`pthread_create()`和`pthread_join()`对于多线程环境下的线程管理。 在实验中,学生可能需要编写...
进度条是一种可视化控件,它允许用户看到后台任务的执行进度,增加了用户对程序运行状态的感知。在统计大量代码时,这尤其重要,因为它可以让用户知道任务何时完成,避免因长时间无反馈而产生的疑惑。进度条的实现...
总的来说,“sqlite3-stress”是评估和优化SQLite3数据库在多线程写入场景下性能的重要工具,它帮助开发者确保在并发压力下,数据库系统依然能够稳定、高效地运行。通过深入理解和使用这个工具,开发者可以更好地...
Python内存管理是一个重要的主题,尤其是对于那些运行长时间后台服务的开发者而言。虽然Python有内置的垃圾回收机制,但仍然可能出现内存泄漏和内存溢出的问题,影响程序的稳定性和效率。 **一、Python内存泄漏** ...