今天写代码的时候突然想到给自己的代码进行压力测试,记得以前用过python写过,但是效果不怎么好,最近java写的比较多,就尝试使用java写一下
先写一下思路:
做压力测试首先要模拟线程并发的状况,那么肯定要使用到多线程的东西,创建线程必不可少,如果只是创建线程的话,肯定不符合场景,因为服务器的硬件资源是有限的
但是用户是可以多个的!比如说用户一台服务器却要服务于100个用户,这台服务器不可能达到100cpu,所以为了充分利用cpu,同时又不要过分使用,就要像tomcat或者spring或sql那样能有线程调度的机制!
Semaphore:用来协调线程,也就是进行调度的一个类,便于合理调用公共资源,大家叫做信号量。
ExecutorService:线程池,早闻大名,直到今日才见到,终于可以使用试试了。用来存放、创建线程。
好,这样用户模拟的东西就有了。那么来说一下具体步骤。
一、创建线程池、线程对象
二、给信号量分配线程
三、设置流,输入参数、输出日志等
这里需要注意的知识点是:
一、文件的读写操作、流的使用
二、线程池、信号量的概念
三、线程的创建
文件读写少不了FileWriter、FileReader,BufferedWriter、BufferedReader、InputStreamReader、OutputStreamWriter,这是有关于流跟缓冲区的使用的父类,注意流的分类1、按照流向分为输入、输出流;2、按照数据形式分为字符、字节流,这两类流 各有优缺点,看使用情况