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

java多线程示例

    博客分类:
  • java
阅读更多

<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 多线程示例

    本示例旨在为初学者提供一个全面理解Java多线程的起点。通过学习这个实例,你可以掌握如何创建和管理线程,理解线程同步与通信的重要性,以及如何处理线程安全问题。 1. **线程的创建** Java提供了两种创建线程的...

    java多线程例子

    Java 多线程例子 Java 多线程是 Java 编程语言中的一种基本概念,它允许程序同时执行多个任务,从而提高程序的性能和效率。本文将通过三个实用的例子,讲解 Java 多线程的基本概念和使用方法。 第一个例子:创建多...

    Java多线程示例,包括错误案例以及正确案例

    Java多线程示例,包括错误案例

    java多线程例子(1).pdf

    java多线程例子(1).pdf java多线程例子(1).pdf java多线程例子(1).pdf

    Java多线程示例 可以直接运行

    本示例提供了可以直接运行的Java多线程代码,帮助开发者更好地理解和运用多线程。 一、继承Thread类 在Java中,可以通过创建一个新的类来继承Thread类,然后覆盖其run()方法,将需要并发执行的任务放入run()方法中...

    java多线程的一个简单例子

    很简单的一个java多线程例子,希望多大家有帮助

    Java多线程示例之线程控制

    总之,Java多线程技术是软件开发中的重要技能,它涉及到线程池的使用、线程同步和通信等多个方面。通过学习和理解`MaxThreadCountTest`中的例子,开发者可以更好地掌握如何在实际项目中控制线程数量,优化程序性能,...

    java 多线程例子

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,从而提高系统效率和资源利用率。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。下面我们将深入探讨这两个方法以及相关的...

    java 多线程例子.doc

    综上所述,这个Java多线程例子演示了如何创建和管理线程,以及线程间的共享数据,但它也暴露了一些潜在的并发问题,如竞态条件。在实际开发中,需要采取适当的同步措施来解决这些问题,确保程序的正确性和可靠性。

    Java 多线程 订票 示例 线程安全

    现在,让我们来看一个简单的订票系统的Java多线程示例。假设我们有一个票务系统,其中的`TicketService`类包含一个`tickets`变量表示剩余票数: ```java public class TicketService { private int tickets = 100;...

    java 多线程操作数据库

    ### Java多线程操作数据库:深入解析与应用 在当今高度并发的应用环境中,Java多线程技术被广泛应用于处理数据库操作,以提升系统的响应速度和处理能力。本文将基于一个具体的Java多线程操作数据库的应用程序,深入...

    java多线程例子-生产者消费者

    在本示例中,“java多线程例子-生产者消费者”旨在展示如何利用多线程来实现生产者和消费者模式。这种模式是并发编程中的经典设计模式,用于协调生产数据和消费数据的两个不同线程。 生产者消费者模式的基本概念是...

    java一个多线程的经典例子

    根据提供的文件信息,我们可以归纳出以下关于Java多线程的经典示例中的关键知识点: ### Java多线程实现方式 在Java中,实现多线程有两种主要的方法:通过继承`Thread`类或者实现`Runnable`接口。 #### 继承...

    java多线程的讲解和实战

    Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...

    java 多线程并发实例

    在Java编程中,多线程并发是提升程序执行效率、充分利用多核处理器资源的重要手段。本文将基于"java 多线程并发实例"这个主题,深入探讨Java中的多线程并发概念及其应用。 首先,我们要了解Java中的线程。线程是...

    Java多线程详解及示例

    Java多线程编程是提升程序性能和响应性的关键技术。理解多线程的概念,掌握线程的创建、同步、通信、死锁避免等核心知识点,以及合理使用线程池,对于编写高效、稳定的并发程序至关重要。通过实践,开发者可以更好地...

    java多线程经典案例

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提升了程序的效率和性能。在Java中,实现多线程有两种主要方式:通过实现Runnable接口或者继承Thread类。本案例将深入探讨Java多线程中的关键...

Global site tag (gtag.js) - Google Analytics