Java多线程读文件比单线程提高效率的实例
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 }
?
?