一个简单的并发测试的例子: 当线程数达到规定的数量,并发执行
package com.http.concurrent.test; import java.util.concurrent.CyclicBarrier; /** * 测试业务处理线程 * @author lijunqing */ public abstract class WorkRun implements Runnable { private final CyclicBarrier barrier; public WorkRun(CyclicBarrier barrier) { this.barrier=barrier; } public void run() { try { System.out.println(Thread.currentThread().getId() + " thread is awaiting"); barrier.await(); process(); } catch(Exception e) { e.printStackTrace(); } } protected abstract void process(); }
每个测试的都继承WorkRun;实现process借口,
测试例子:
public static void main(String[] args) { int count=1000; CyclicBarrier barrier=new CyclicBarrier(count); ExecutorService executorService=Executors.newFixedThreadPool(count); for(int i=0; i < count; i++) { executorService.execute(new LoginTest(barrier)); } executorService.shutdown(); long starttime=System.currentTimeMillis(); while(!executorService.isTerminated()) { System.out.println("有没有关闭的"); } long endtime=System.currentTimeMillis(); System.out.println("starttime:" + starttime + " endtime:" + endtime+" 所有线程完成用时:"+(endtime-starttime)); }
结果:
8 thread is awaiting 10 thread is awaiting 9 thread is awaiting 12 thread is awaiting 11 thread is awaiting ******** 37 thread is awaiting 39 thread is awaiting 1006 thread is awaiting 1007 thread is awaiting 有没有关闭的 有没有关闭的 有没有关闭的 有没有关闭的 有没有关闭的 有没有关闭的 ********* 有没有关闭的 有没有关闭的 1005 thread is awaiting 1003 thread is awaiting 1004 thread is awaiting 999 thread is awaiting 1001 thread is awaiting ***** 62 thread is awaiting 60 thread is awaiting 55 thread is awaiting 57 thread is awaiting 53 thread is awaiting 58 thread is awaiting 56 thread is awaiting 54 thread is awaiting 52 thread is awaiting 51 thread is awaiting 49 thread is awaiting 47 thread is awaiting 50 thread is awaiting 48 thread is awaiting 46 thread is awaiting 45 thread is awaiting 43 thread is awaiting 41 thread is awaiting 有没有关闭的 有没有关闭的 有没有关闭的 有没有关闭的 有没有关闭的 有没有关闭的 有没有关闭的 有没有关闭的 有没有关闭的 ***** 有没有关闭的 --start--working--43 ******* --start--working--168 --start--working--164 --start--working--166 --start--working--163 --start--working--165 --start--working--170 --start--working--172 --start--working--167 --start--working--178 --start--working--174 --start--working--180 --start--working--176 --start--working--169 --start--working--171 ******* --start--working--41 有没有关闭的 starttime:1394614101246 endtime:1394614101855 所有线程完成用时:609
相关推荐
在本文中,我们将深入探讨如何使用C#中的`HttpListener`类来构建一个简单的高并发HTTP服务器。`HttpListener`是.NET Framework提供的一个强大的组件,它允许开发者创建一个能够监听和响应HTTP请求的服务。我们将讨论...
**jbpm4测试例子(项目中含hsqldb数据库)** jbpm4 是一个开源的工作流管理系统,它提供了业务流程管理(BPM)和工作流服务。jbpm4的测试例子是一个很好的学习资源,帮助开发者了解如何在实际项目中集成和使用jbpm4。...
JMeter的独特之处在于其内置的线程机制,使得用户无需编写复杂的并发代码,只需简单配置即可实现高并发测试。 JMeter的结构主要包括以下几个部分: 1. **bin目录**:包含了启动JMeter的可执行文件jmeter.bat,运行...
总的来说,"android,百度导航,语音的测试例子"涵盖的不仅仅是简单的集成与测试,更是Android开发者对地图服务和语音交互技术的深度理解和实践。通过不断的测试和优化,我们可以打造出更加智能、便捷的导航应用。
本资料包显然是一个针对Go并发编程的学习资源,包含实际示例和测试用例,帮助你通过实践深入理解并发模式。 Go并发主要通过goroutine和channel来实现。Goroutine可以被看作轻量级线程,它的创建和切换成本低,使得...
本文将深入讲解C++如何利用完成端口实现一个简单的服务器,并提供了一个测试客户端程序。 首先,理解I/O完成端口的工作原理至关重要。I/OCP将多个I/O请求分发到工作线程池中的线程,当I/O操作完成时,操作系统会将...
│ 高并发编程第一阶段36讲、自定义个简单的线程池并且测试.mp4 │ 高并发编程第一阶段37讲、给线程池增加拒绝策略以及停止方法.mp4 │ 高并发编程第一阶段38讲、给线程池增加自动扩充线程数量,以及闲时自动回收...
以下是一个简单的多线程并发测试的步骤: 1. **创建线程**: 首先,定义一个函数,这个函数包含了你要并发执行的代码。例如,上述例子中的`action()`函数,它发送一个HTTP请求到指定的URL。 2. **初始化线程**: ...
11. **单元测试**:学习使用如NUnit或MSTest这样的单元测试框架,编写测试用例验证代码的正确性。 12. **NuGet包管理**:了解如何使用NuGet来引入第三方库,扩展.NET应用的功能。 这些例子将逐步引导初学者熟悉...
### 软件测试与简易版软件测试报告详解 #### 一、软件测试概述 **1.1 目的** 软件测试的主要目的是确保软件产品能够按照预期的方式运行,并且满足用户的需求。通过测试,可以发现并修复软件中存在的缺陷或错误,...
在这个“通信测试例子”中,我们可能会看到如何使用MINA框架搭建一个简单的服务器和客户端,它们之间如何进行数据交换。这可能涉及以下步骤: 1. **设置环境**:导入MINA相关的jar包到项目中,配置Maven或Gradle...
│ 高并发编程第一阶段36讲、自定义个简单的线程池并且测试.mp4 │ 高并发编程第一阶段37讲、给线程池增加拒绝策略以及停止方法.mp4 │ 高并发编程第一阶段38讲、给线程池增加自动扩充线程数量,以及闲时自动回收...
在IT行业中,高并发访问是网站和应用程序设计中不可...总之,模拟高并发访问是系统性能测试的重要环节,通过PHP自带的函数批处理URL访问,我们可以初步了解系统的并发处理能力,并结合其他优化手段进一步提升系统性能。
这个"spring-Security简单例子"旨在展示如何在项目中配置和使用Spring Security进行用户登录和访问权限控制的基本操作。下面将详细阐述Spring Security的核心概念、配置步骤以及实现原理。 1. **核心概念** - **...
同时,库还附带了测试例子,这有助于理解和验证库的功能,快速上手使用。 在C++中连接Memcached通常涉及到以下几个关键知识点: 1. **Memcached协议**:C++库会实现与Memcached服务器通信的协议,通常是基于文本的...
在项目中,"test"目录通常用于存放单元测试代码,以验证各个模块的功能。而"libs"目录则包含了项目所依赖的外部库文件,这些库可能包含了实现TCP通信、加密算法、日志管理等功能的类库。 总的来说,这个TCP服务器...
这个例子有助于理解C++中如何实现并发控制以及并发编程的关键概念。 首先,我们需要了解并发编程的基本概念。并发是指两个或更多的操作在同一时间段内进行,而不是顺序执行。这并不意味着这些操作会并行完成,因为...
在IT行业中,压力测试是一种非常重要的测试方法,用于评估系统在高负载或大量并发请求下的性能和稳定性。本文将深入探讨如何使用Python来实现这样的压力测试,模拟客户端发送连续请求,以此来检测服务器的响应速度、...
这个例子可能使用了IDE如Eclipse或IntelliJ IDEA,它们通常有集成的EJB支持,可以帮助开发者创建、测试和部署EJB项目。Maven或Gradle这样的构建工具可能用于管理项目的依赖和构建过程。 6. **EJB的优势**: EJB...