<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
Java 多线程实例-测试多线程效率
部分代码来自网络
欢迎加入Q-Q群:123866420,加入请说明:来自iteye.com
代码在附件中,方便阅读请下载 写最好的文章 留个赞哦
创建一个固定大小的txt文件
代码如下:
package test.multiThread;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
publicclass FileCreate {
privatefinalstatic String path = "C:\\Users\\Administrator\\Desktop\\test1.txt";
privatefinalstatic String crlf=System.getProperty("line.separator");
//单位是kb
privatefinalstaticintsize = 1024*5; //5兆
//是否限制文件大小
privatestaticbooleanpsize = true;
publicstaticvoid main(String[] args) throws IOException {
File file = null;
OutputStream out = null;
if(psize){
file = new File(path);
int i=0;
while(psize && file.length()<= size*1024){
out = new FileOutputStream(file,true);
out = new FileOutputStream(file,true);
out.write((String.valueOf(i)+"------").getBytes());
out.write(crlf.getBytes());
i++;
}
}else{
file = new File(path);
for (int i = 0; i <= 1500; i++) {
out = new FileOutputStream(file,true);
out.write((String.valueOf(i)+"------").getBytes());
out.write(crlf.getBytes());
}
}
if(null != out){
out.flush();
out.close();
}
file = null;
out = null;
}
}
读取文件方法体,继承Runnable实现多线程
代码如下:
package test.multiThread;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
class MultiThread implements Runnable{
private static BufferedReader br = null;
private List<String> list;
static{
try {
br = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\test1.txt"),3);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public void run() {
String line = null;
int count = 0;
while(true) {
this.list = new ArrayList<String>();
synchronized(br) {
try {
while((line = br.readLine()) != null) {
if(count<3) {
list.add(line+Thread.currentThread().getName());
count++;
}else {
list.add(line+Thread.currentThread().getName());
count = 0;
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
try {
Thread.sleep(1);
display(this.list);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(line == null)
break;
}
}
/**
* 打印读取的内容,不建议打印,影响效率
*/
public void display(List<String> list) {
for(String str:list) {
System.out.println(str);
}
//System.out.println(list.size());
}
}
测试多线程效率
代码如下:
package test.multiThread;
import java.util.Date;
/** @author zongcai_liu
* @email 892530175@qq.com
* 2014-3-12 下午3:36:38
*/
publicclass ThreadReadDemo {
publicstaticvoid main(String[] args) throws InterruptedException {
Date now = new Date();
//线程数目
int threadNum = 10;
Thread[] thread = new Thread[threadNum];
for(int i=0;i<thread.length;i++){
thread[i] = new Thread(new MultiThread(),String.valueOf(i));
thread[i].start();
//thread[i].join();
}
for(int i=0;i<thread.length;i++){
while(thread[i].isAlive()){
}
}
Date end = new Date();
System.out.println("------线程时间---------");
System.out.println((end.getTime()-now.getTime())/1000+"秒");
}
}
测试结果:
5M的txt文件
结果1:开启1个线程读取时间:
第一次:
<!--[if gte vml 1]><v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="图片_x0020_1" o:spid="_x0000_i1032" type="#_x0000_t75"
alt="说明: C:\Users\Administrator\AppData\Roaming\Tencent\Users\892530175\QQ\WinTemp\RichOle\9AR($ZIR976%ISI39FN8I86.jpg"
style='width:157.5pt;height:32.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image001.jpg"
o:title="9AR($ZIR976%ISI39FN8I86"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
第2次:
<!--[if gte vml 1]><v:shape
id="图片_x0020_2" o:spid="_x0000_i1031" type="#_x0000_t75" style='width:152.25pt;
height:45pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image002.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
结果2:开启5个线程读取时间:
第一次:
<!--[if gte vml 1]><v:shape id="图片_x0020_5"
o:spid="_x0000_i1030" type="#_x0000_t75" style='width:167.25pt;height:51pt;
visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
第2次:
<!--[if gte vml 1]><v:shape
id="图片_x0020_6" o:spid="_x0000_i1029" type="#_x0000_t75" style='width:169.5pt;
height:52.5pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image004.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
结果3:开启10个线程读取时间:
第一次:
<!--[if gte vml 1]><v:shape id="图片_x0020_9"
o:spid="_x0000_i1028" type="#_x0000_t75" style='width:150.75pt;height:45pt;
visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image005.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
第2次:
<!--[if gte vml 1]><v:shape
id="图片_x0020_10" o:spid="_x0000_i1027" type="#_x0000_t75" style='width:204.75pt;
height:56.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image006.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
结果3:开启50个线程读取时间:
第一次:
<!--[if gte vml 1]><v:shape id="图片_x0020_13"
o:spid="_x0000_i1026" type="#_x0000_t75" style='width:192pt;height:62.25pt;
visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image007.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
第2次:
<!--[if gte vml 1]><v:shape
id="图片_x0020_14" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:179.25pt;
height:93.75pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image008.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
分享到:
相关推荐
本示例旨在为初学者提供一个全面理解Java多线程的起点。通过学习这个实例,你可以掌握如何创建和管理线程,理解线程同步与通信的重要性,以及如何处理线程安全问题。 1. **线程的创建** Java提供了两种创建线程的...
Java 多线程例子 Java 多线程是 Java 编程语言中的一种基本概念,它允许程序同时执行多个任务,从而提高程序的性能和效率。本文将通过三个实用的例子,讲解 Java 多线程的基本概念和使用方法。 第一个例子:创建多...
Java多线程示例,包括错误案例
java多线程例子(1).pdf java多线程例子(1).pdf java多线程例子(1).pdf
本示例提供了可以直接运行的Java多线程代码,帮助开发者更好地理解和运用多线程。 一、继承Thread类 在Java中,可以通过创建一个新的类来继承Thread类,然后覆盖其run()方法,将需要并发执行的任务放入run()方法中...
很简单的一个java多线程例子,希望多大家有帮助
总之,Java多线程技术是软件开发中的重要技能,它涉及到线程池的使用、线程同步和通信等多个方面。通过学习和理解`MaxThreadCountTest`中的例子,开发者可以更好地掌握如何在实际项目中控制线程数量,优化程序性能,...
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,从而提高系统效率和资源利用率。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。下面我们将深入探讨这两个方法以及相关的...
综上所述,这个Java多线程例子演示了如何创建和管理线程,以及线程间的共享数据,但它也暴露了一些潜在的并发问题,如竞态条件。在实际开发中,需要采取适当的同步措施来解决这些问题,确保程序的正确性和可靠性。
现在,让我们来看一个简单的订票系统的Java多线程示例。假设我们有一个票务系统,其中的`TicketService`类包含一个`tickets`变量表示剩余票数: ```java public class TicketService { private int tickets = 100;...
### Java多线程操作数据库:深入解析与应用 在当今高度并发的应用环境中,Java多线程技术被广泛应用于处理数据库操作,以提升系统的响应速度和处理能力。本文将基于一个具体的Java多线程操作数据库的应用程序,深入...
在本示例中,“java多线程例子-生产者消费者”旨在展示如何利用多线程来实现生产者和消费者模式。这种模式是并发编程中的经典设计模式,用于协调生产数据和消费数据的两个不同线程。 生产者消费者模式的基本概念是...
根据提供的文件信息,我们可以归纳出以下关于Java多线程的经典示例中的关键知识点: ### Java多线程实现方式 在Java中,实现多线程有两种主要的方法:通过继承`Thread`类或者实现`Runnable`接口。 #### 继承...
Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...
在Java编程中,多线程并发是提升程序执行效率、充分利用多核处理器资源的重要手段。本文将基于"java 多线程并发实例"这个主题,深入探讨Java中的多线程并发概念及其应用。 首先,我们要了解Java中的线程。线程是...
Java多线程编程是提升程序性能和响应性的关键技术。理解多线程的概念,掌握线程的创建、同步、通信、死锁避免等核心知识点,以及合理使用线程池,对于编写高效、稳定的并发程序至关重要。通过实践,开发者可以更好地...
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提升了程序的效率和性能。在Java中,实现多线程有两种主要方式:通过实现Runnable接口或者继承Thread类。本案例将深入探讨Java多线程中的关键...