当前位置:首页 » 编程语言 » java并发测试

java并发测试

发布时间: 2022-09-04 02:52:29

1. java并发编程实战怎么样

我不想再继续吐槽翻译,的确有些话理解起来有些费劲,但就内容而言,这本书当吃无愧堪称JAVA并发领域的一朵明珠,光芒万丈的指引着并发这条路。(如果你有能力就读英文版的,既然要吐槽中文版,还是就事论事的好) 前年的时候看过一边,当时觉得读这本书的时候用个新的成语来形容就是——不明觉厉。 近两年各种并发开始流行,其实也流行了几十年了,可以负责任的说网上你能看到的几乎所有中文关于JAVA并发的理解和解读几乎都可以在这本书上找到。 个人感觉还是应该上来介绍JMM的,这样至少能提起很大兴趣。此书的翻译堪称晦涩难懂,如果不是硬着头皮读下来,尝试去理解,这真不是水平的问题,真难以想象花了10几个小时愣是把这本书再次读完了。 其实这本书读完后你最大的收获应该是能够去理解那些现今相当牛逼的JAVA领域的并发库和框架了,当然你的收获还有就是特别小心的使用锁,发布可见性,活跃性,性能和测试等等。 这本书包含的内容涉及之广、之深不能全部一下子消化完,例子非常具有代表性和针对性,值得你面对并发时再次读读这本书,如果接触的不多或者只是刚刚了解并发,也非常适合你对整个JAVA世界的并发领域有个认识,重读会有更进一步的理解,JAVA的并发真是令人瞠目结舌,无法形容,强大和灵活到一定地步了,当然这份强大是用庞大付出代价的。 个人感觉看完后,真是应该再把JDK里关于并发的库仔细读读。 虽然这本书是在讲JAVA的并发,但是如果有别的语言经验的同学也应该推荐读读,让你了解下JAVA世界的并发是如此的精彩和复杂诡异。 虽然不能完全记住书中的细节,但建好索引就足够了,待日后用时可以再次翻阅。

2. JAVA如何写一个纯并发的压力测试

importjava.io.BufferedReader;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.InputStreamReader;

importjava.io.PrintWriter;

importjava.net.HttpURLConnection;

importjava.net.URL;

importjava.util.HashMap;

importjava.util.Map;

importjava.util.concurrent.ExecutorService;

importjava.util.concurrent.Executors;

importjava.util.concurrent.Semaphore;

publicclassConcurrentTest{

privatestaticintthread_num=200;

privatestaticintclient_num=460;

privatestaticMapkeywordMap=newHashMap();

static{

try{

InputStreamReaderisr=newInputStreamReader(newFileInputStream(

newFile("clicks.txt")),"GBK");

BufferedReaderbuffer=newBufferedReader(isr);

Stringline="";

while((line=buffer.readLine())!=null){

keywordMap.put(line.substring(0,line.lastIndexOf(":")),"");

}

}catch(Exceptione){

e.printStackTrace();

}

}

publicstaticvoidmain(String[]args){

intsize=keywordMap.size();

//TODOAuto-generatedmethodstub

ExecutorServiceexec=Executors.newCachedThreadPool();

//50个线程可以同时访问

finalSemaphoresemp=newSemaphore(thread_num);

//模拟2000个客户端访问

for(intindex=0;index<client_num;index++){

finalintNO=index;

Runnablerun=newRunnable(){

publicvoidrun(){

try{

//获取许可

semp.acquire();

System.out.println("Thread:"+NO);

Stringhost="http://10.99.23.42:7001/KMQueryCenter/query.do?";

Stringpara="method=getQueryResult&pageNum=1&pageSize=5&"

+"queryKeyWord="

+getRandomSearchKey(NO)

+"&questionID=-1&questionIdPath=-1&searchType=1"

+"&proLine=&proSeries=&proType="+NO;

System.out.println(host+para);

URLurl=newURL(host);//此处填写供测试的url

HttpURLConnectionconnection=(HttpURLConnection)url

.openConnection();

//connection.setRequestMethod("POST");

//connection.setRequestProperty("Proxy-Connection",

//"Keep-Alive");

connection.setDoOutput(true);

connection.setDoInput(true);

PrintWriterout=newPrintWriter(connection

.getOutputStream());

out.print(para);

out.flush();

out.close();

BufferedReaderin=newBufferedReader(

newInputStreamReader(connection

.getInputStream()));

Stringline="";

Stringresult="";

while((line=in.readLine())!=null){

result+=line;

}

//System.out.println(result);

//Thread.sleep((long)(Math.random())*1000);

//释放

System.out.println("第:"+NO+"个");

semp.release();

}catch(Exceptione){

e.printStackTrace();

}

}

};

exec.execute(run);

}

//退出线程池

exec.shutdown();

}

(finalintno){

Stringret="";

intsize=keywordMap.size();

//intwanna=(int)(Math.random())*(size-1);

ret=(keywordMap.entrySet().toArray())[no].toString();

ret=ret.substring(0,ret.lastIndexOf("="));

System.out.println(" "+ret);

returnret;

}

}

3. java的压力测试和并发测试

你在loadrunner 中的JAVAVUSER编写开发就行了,测试代码是根据你的需求来开发编写的,不是通用的代码!

4. 用java的netty框架写了一个udp服务端,怎么测试它能承受的并发压力

主从Reactor多线程Nio结构,主从Reactor线程模型的特点是:服务端用于接收客户端连接的不再是个1个单独的NIO线程,而是一个独立的NIO线程池。Acceptor接收到客户端TCP连接请求处理完成后(可能包含接入认证等),将新创建的SocketChannel注册到IO线程池(sub reactor线程池)的某个IO线程上,由它负责SocketChannel的读写和编解码工作。Acceptor线程池仅仅只用于客户端的登陆、握手和安全认证,一旦链路建立成功,就将链路注册到后端subReactor线程池的IO线程上,由IO线程负责后续的IO操作。
利用主从NIO线程模型,可以解决1个服务端监听线程无法有效处理所有客户端连接的性能不足问题。
它的工作流程总结如下:
从主线程池中随机选择一个Reactor线程作为Acceptor线程,用于绑定监听端口,接收客户端连接;
Acceptor线程接收客户端连接请求之后创建新的SocketChannel,将其注册到主线程池的其它Reactor线程上,由其负责接入认证、IP黑白名单过滤、握手等操作;
步骤2完成之后,业务层的链路正式建立,将SocketChannel从主线程池的Reactor线程的多路复用器上摘除,重新注册到Sub线程池的线程上,用于处理I/O的读写操作。

5. java多线程怎么测试

测试并发的性能吗?可以用Jmeter进行模拟多线程测试

6. java jvm 并发和并行的区别

并发(concurrency)和并行(parallellism)是:
解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
解释三:在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群

所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。

7. 只通过java代码,保证并发量过万的方法有哪些

另外一个回复是简单的建议,限于代码层面跟计算资源紧张的情况。
说说我的理论:
1、想要这么大的并发量,申请买几台比较好的机器,带宽加到足够大应该不是问题。
2、网络层的负载均衡考虑一下,这应该也不是啥问题,这么大并发量,别告诉我客户网络设计很垃圾。高端点的网络设备都没有。
3、软件层的结构,看用户给什么样的机器,如果经济型的机器,考虑分布式运算,分布式再从软件层面做集群或主从。根据计算密集型还是IO密集型选择适合的设备。计算密集型的业务,需要强悍的CPU(可以用多C,未必是频率高的)+内存。IO密集型的业务需要,速度快的存储,越快越好。有极致要求的考虑固态存储设备。
4、并发设计,java中主要是线程的应用。能拆分成多任务的运算一定拆成多任务。尽量压榨cpu资源,现在的工作站不会写并发程序,真浪费cpu资源。
5、数据库并发的考量,以前说mysql不如oracle现在还有人有这论调。使用的时候把参数调整到最优状态。如缓存到内存中数据大小,内存要够,就把全部表数据加载到内存中。mysql的innodb调整两三个参数就行。数据库IO访问,mysql有测算IO能力的参数,存储够好,可以调整到很大。
6、这么大的并发量,选择适合的缓存器,可以用来缓存热点数据,或加快分布式运算的IO访问能力。(磁盘肯定没内存块,包括固态)
7、代码编写完后,对系统整体进行测试,评估,分析性能瓶颈,优化代码。
能做到以上标准,tomcat+mysql跑一堆集群也不会慢。

8. java httpclient 并发量大怎么办

java httpclient 并发量大解决办法:
首先你要增加一个关于异步IO需要的包:

1、async-http-client包,可以在这里下载:https://oss.sonatype.org/content/repositories/releases/com/ning/async-http-client/1.6.2/
2、log4j的包,这个不用我说了,都知道在哪里
3、slf4j-spi 的包,目前用1.5以上的版本比较多。
4、slf4j-log4j 的包,可以看出,slf4j是在log4j基础上包装的。
OK,就这几个了,弄好后再看看下面这段代码,通过使用它,性能可以得到明显改善:

[java] view plain
AsyncHttpClient client = new AsyncHttpClient();
try {
Future<Response> f = client.prepareGet("http://www.google.com.hk/").execute();
System.out.println(f.get().getResponseBody("Big5"));//谷歌的输出编码集为Big5,反向解析结果的时候使用
}catch(...) {....}

这段代码是不是超级简单,可以通过上面描述的三种方式:
1、直接调用
2、将GetMethod或PostMethod对象作为共享对象反复使用。
3、使用AsyncHttpClient
这三种方法,非别使用一次调用、循环多次调用、并发调用来测试性能,后面两者的性能比第一种方法的性能要高很多。

9. java开发中单tomcat能支持多少并发不同操作系统一样么

Tomcat 默认是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大,理论是想多大就多大。
具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。
当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。
并发和同时在线用户数是不一样的,因为不同的用户操作是有间隔的。如果逻辑复杂,请求执行时间过长,就会占用过多的性能,导致同时在线用户数下降,但是对并发没有影响。
操作系统对于进程中的线程数有一定的限制:
Windows 每个进程中的线程数不允许超过 2000;
Linux 每个进程中的线程数不允许超过 1000;

另外,在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。

10. 关于java方法并发出现的问题,急!!!

多线程就是这样的,你没法预测执行顺序。

如果需要执行完A方法在让别的线程进入,那就用线程间同步的知识。

public synchronized list A() {……………
可能可以,主要看你解决的问题,这种情况,对象锁是当前对象

热点内容
安卓辅助脚本如何写 发布:2025-01-15 13:42:50 浏览:123
压缩裤的穿法 发布:2025-01-15 13:39:24 浏览:314
支付宝如何设支付密码 发布:2025-01-15 13:39:24 浏览:257
ea编程入门 发布:2025-01-15 13:30:11 浏览:412
应缴费档次配置异常怎么回事 发布:2025-01-15 13:20:34 浏览:617
成都php招聘 发布:2025-01-15 13:12:16 浏览:381
怎么调用服务器数据库 发布:2025-01-15 13:06:25 浏览:656
人人网设置访问权限 发布:2025-01-15 13:02:06 浏览:563
崩坏学园2脚本 发布:2025-01-15 12:58:43 浏览:459
我的世界服务器等级如何升 发布:2025-01-15 12:45:55 浏览:689