`
shibin_1109
  • 浏览: 79827 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java线程测试高并发

    博客分类:
  • java
JVM 
阅读更多
package com.expai.utils;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.log4j.Logger;

public class BingfaTest {
	protected static final Logger LOG = Logger.getLogger(BingfaTest.class);
	private static  BingfaTest binfaTest = new BingfaTest();
	 public static BingfaTest getInstance() {
	        return binfaTest;
	    }
	 //count为启动线程的个数,httpUrl为请求的url,para为需要传的参数
	 public void exeThread(int count,String httpUrl,String para){
         CyclicBarrier cyclicBarrier = new CyclicBarrier(count);
         ExecutorService executorService = Executors.newFixedThreadPool(count);
         for (int i = 0; i < count; i++)
              executorService.execute(new BingfaTest().new Task(cyclicBarrier,httpUrl,para));
         //执行后不再执行新任务shutdown,
         executorService.shutdown();
         //当线程池的工作队列中的所有任务执行完毕,executorService.isTerminated()方法就会返回true。
         while (!executorService.isTerminated()) {
              try {
                   Thread.sleep(10);
              } catch (InterruptedException e) {
                   e.printStackTrace();
              }
         }
	 }
	 public class Task implements Runnable {
         private CyclicBarrier cyclicBarrier;
         private String httpUrl;
         private String para;

         public Task(CyclicBarrier cyclicBarrier,String httpUrl,String para) {
              this.cyclicBarrier = cyclicBarrier;
              this.httpUrl=httpUrl;
              this.para=para;
         }

         @Override
         public void run() {
              try {
                   // 等待所有任务准备就绪
                   cyclicBarrier.await();
                   // 测试内容
                   URL url =new URL(httpUrl+para);
                   HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
                   connection.setDoOutput(true);  
                   connection.setDoInput(true);
                   //组织提交信息
                   PrintWriter out = new PrintWriter(connection.getOutputStream());
                   out.print(para);
                   out.flush();
                   //获得返回信息
                   BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                   String line=null;
                   //返回的参数拼接成字符串
                   StringBuffer content = new StringBuffer();
                   while((line=in.readLine())!=null){
                   	content.append(line);
                   }
                   in.close();
                   LOG.info("返回数据====="+content.toString());
              } catch (Exception e) {
                   e.printStackTrace();
              }
         }
    }
}


分享到:
评论

相关推荐

    Java 模拟线程并发

    Java 模拟线程并发是编程领域中的一个重要概念,尤其在多核处理器和高并发应用中,理解并熟练掌握线程并发技术对于提升程序性能至关重要。在Java中,线程并发可以通过多种方式实现,包括继承Thread类、实现Runnable...

    JAVA多线程测试工具

    Java多线程测试工具在软件开发中扮演着至关重要的角色,尤其在性能优化和系统压力测试方面。本文将深入探讨Java多线程测试工具的重要性和使用,以"JMeter"为例,来阐述如何通过此类工具进行高效的压力测试和系统瓶颈...

    多线程与高并发-电子.pdf

    多线程与高并发是计算机科学中非常重要的两个概念,它们在提高软件程序的性能、响应速度和资源利用率方面起着至关重要的作用。在当今的互联网时代,特别是在产业互联网和5G技术的推动下,多线程和高并发的应用变得...

    java多线程测试实例

    以下是对"java多线程测试实例"的详细解析: 1. **线程的创建方式** - 实现`Runnable`接口:创建一个类实现`Runnable`接口,然后将其实例传递给`Thread`类的构造函数创建线程。 - 继承`Thread`类:创建一个类直接...

    Java多线程测试程序,

    在本项目中,“Java多线程测试程序”利用了这一特性,结合图形用户界面(GUI)框架JFrame,实现了企鹅在界面上的动态移动效果。 首先,我们来深入理解Java多线程。在Java中,每个运行的程序都有一个主线程,而多...

    java多线程模拟处理银行的实时转账交易

    总的来说,这个项目涵盖了Java多线程编程中的诸多重要知识点,包括线程创建与管理、并发控制、异常处理、事务一致性以及测试。通过实际操作,开发者可以深入理解并掌握这些关键概念和技术,提升自己的编程能力。

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第一阶段28讲、线程生产者消费者的综合实战结合Java8语法.mp4 │ 高并发编程第一阶段29讲、如何实现一个自己的显式锁Lock精讲上.mp4 │ 高并发编程第一阶段30讲、如何实现一个自己的显式锁Lock精讲...

    高并发多线程处理demo-java.rar

    在Java编程领域,高并发和多线程是关键的技术之一,尤其在服务器端应用和大数据处理中至关重要。这个"高并发多线程处理demo-java.rar"压缩包提供了一个实际的Java实现,展示了如何构建一个并发队列来接收数据,并...

    java并发测试

    在Java编程领域,"并发测试"是一个至关重要的环节,特别是在构建高性能、高可用性的系统时。这个主题主要涉及如何在多线程环境下测试程序的性能、稳定性和正确性。在这个场景下,`MutiThreadTest.java` 文件可能是...

    java多线程代码demo

    在Java编程中,多线程是一项...通过分析和实践这些Java多线程代码示例,开发者可以加深对并发编程的理解,提升编写高并发、高性能程序的能力。在实际项目中,应结合业务需求灵活运用这些技术,确保程序的稳定性和效率。

    Java线程模块Java线程之秒表

    本节将深入探讨Java线程中的“秒表”概念,这是一种用于度量时间间隔的实用工具,常用于性能测试和调试。 首先,让我们理解Java如何创建和管理线程。在Java中,有两种方式来创建线程:继承Thread类或实现Runnable...

    实现Java高并发隔离 模拟

    在Java编程中,高并发是系统设计中的一个重要挑战。它涉及到如何有效地处理大量并发用户请求,以确保系统的稳定性和性能。在这个场景下,“隔离”是一个关键的概念,它旨在避免并发执行时可能出现的数据竞争和资源...

    简单的java线程demo

    Java线程是多任务编程的重要概念,特别是在大型的、复杂的软件系统中,它允许程序同时执行多个不同的任务,提升程序的并发性和效率。本示例"简单的Java线程demo"旨在帮助初学者理解如何在Java中创建和管理线程。 在...

    MCA 多线程&高并发.zip

    在Java编程中,多线程和高并发是提升系统性能的关键技术。对于初中级开发者而言,掌握这些技能至关重要,因为它们能够帮助我们构建出更加高效、响应迅速的应用。本教程将深入探讨多线程的基本概念、并发控制策略以及...

    java线程与协程效果对比

    总的来说,Java线程适合CPU密集型任务,能充分利用硬件资源,但面临上下文切换和同步问题;而协程则在IO密集型任务中表现出色,拥有更高的并发性和更低的开销。开发者应根据具体应用场景选择合适的并发模型,以优化...

    java selector 测试并发

    这种机制极大地提高了处理并发连接的效率,尤其在服务器端编程中,如构建高并发的网络应用。 Java Selector的核心类包括`Selector`、`SelectionKey`和`SelectableChannel`。`Selector`是实际进行选择操作的对象,它...

    JUC代码收集,java高并发多线程学习

    本资源"JUC代码收集,java高并发多线程学习"显然是一个专注于探讨和学习JUC库的资料包。 JUC库包含多个子包,如`concurrent`, `atomic`, `locks`等,每个子包都有其特定的功能和用途: 1. **concurrent**:这是JUC...

    现代多线程 JAVA和c++多线程实现 测试和调试

    本资源主要探讨了如何在JAVA和C++中实现多线程,以及相关的测试和调试技术。 在JAVA中,多线程的实现主要依赖于`Thread`类和`Runnable`接口。开发者可以通过直接继承`Thread`类或实现`Runnable`接口来创建新的线程...

    JAVA多线程教材

    Java多线程是Java编程中的核心概念,尤其在开发高并发、高性能的应用程序时不可或缺。本书籍《JAVA多线程教材》显然会深入探讨这一主题,帮助开发者掌握如何有效地利用多核处理器,提高程序的执行效率。PDF格式的...

    Java线程赛马优先级示例.rar

    Java线程赛马优先级示例是一个典型的多线程编程问题,它涉及到Java中的线程管理、优先级机制以及并发执行的概念。在这个示例中,我们有两个线程,一个被标记为高优先级,另一个为低优先级,它们在程序运行时会进行...

Global site tag (gtag.js) - Google Analytics