假设有两个文本文件Arrays-1.txt和Arrays-2.txt,内容格式如下:
1
2
3
4
.
.
.
用单线程分别读这两个文件并求和,花费时间time1;用两个线程同时读这两个文件并求和,花费时间time2;结果显示:time1>time2,因此说明多线程可以提高效率.测试计算机配置:双核Intel Core i3 cpu550,4G RAM
View Code
1 import java.io.*; 2 public class ThreadsSum6{ 3 public static void main(String[] args) throws IOException { 4 String str; 5 long sum1=0; 6 long start = System.currentTimeMillis(); 7 FileReader fr=new FileReader("arrays-1.txt"); 8 //建立文件输入流 9 BufferedReader br=new BufferedReader(fr); 10 //建立缓冲输入流 11 12 while ((str=br.readLine())!=null) { 13 sum1+=Integer.parseInt(str); 14 } 15 fr=new FileReader("arrays-2.txt"); 16 br=new BufferedReader(fr); 17 while ((str=br.readLine())!=null) { 18 sum1+=Integer.parseInt(str); 19 } 20 fr.close(); 21 long end = System.currentTimeMillis(); 22 System.out.println("sum1="+sum1); 23 System.out.println("time1="+(end - start)); 24 25 start = System.currentTimeMillis(); 26 ReadFileThread th1=new ReadFileThread("arrays-1.txt"); 27 ReadFileThread th2=new ReadFileThread("arrays-2.txt"); 28 th1.start(); 29 th2.start(); 30 try{//等待线程结束 31 th1.join(); 32 th2.join(); 33 }catch(Exception e){} 34 long sum2=th1.getSum()+th2.getSum(); 35 end = System.currentTimeMillis(); 36 37 System.out.println("sum2="+sum2); 38 System.out.println("time2="+(end - start)); 39 } 40 } 41 class ReadFileThread extends Thread{ 42 long sum=0; 43 FileReader fr; 44 BufferedReader br; 45 String str; 46 public ReadFileThread(String fileName){ 47 try{ 48 fr=new FileReader(fileName); 49 //建立文件输入流 50 br=new BufferedReader(fr); 51 //建立缓冲输入流 52 } 53 catch(Exception e){System.out.println("error1");} 54 } 55 public void run(){ 56 try{ 57 while((str=br.readLine())!=null) { 58 sum+=Integer.parseInt(str); 59 } 60 fr.close(); 61 } 62 catch(Exception e){System.out.println("error2");} 63 } 64 long getSum(){ 65 return sum; 66 } 67 }