Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 3.04 KB | None | 0 0
  1. import java.io.BufferedWriter;
  2. import java.io.BufferedReader;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. import java.util.logging.Level;
  10. import java.util.logging.Logger;
  11.  
  12. public class MultiThreadHW {
  13.  
  14.     public static void main(String[] args) {
  15.         int numberOfFiles = extra.Console.readInt("How many files do you want (1-10)? ");
  16.         while (numberOfFiles < 1 || numberOfFiles > 10) {
  17.             numberOfFiles = extra.Console.readInt("Invalid answer, choose a number between 1 and 10 ");
  18.         }
  19.  
  20.         createFiles(numberOfFiles);
  21.         long sumOfRowsFromAllFiles = 0;
  22.         List<FileThread> filethreads = new ArrayList<>();
  23.  
  24.         try {
  25.             for (int i = 0; i < numberOfFiles; i++) {
  26.                 filethreads.add(new FileThread(new FileReader("C:\\workspace\\MultiThreadHW\\text" + i + ".txt")));
  27.                 filethreads.get(i).start();
  28.                 filethreads.get(i).join();
  29.             }
  30.  
  31.             for (FileThread filethread : filethreads) {
  32.                 sumOfRowsFromAllFiles += filethread.getNumberOfRows();
  33.             }
  34.  
  35.             System.out.println("The number of rows in all files is: " + sumOfRowsFromAllFiles);
  36.  
  37.         } catch (FileNotFoundException ex) {
  38.             Logger.getLogger(MultiThreadHW.class.getName()).log(Level.SEVERE, null, ex);
  39.         } catch (InterruptedException ex) {
  40.             Logger.getLogger(MultiThreadHW.class.getName()).log(Level.SEVERE, null, ex);
  41.         }
  42.     }
  43.  
  44.     public static void createFiles(int numberOfFiles) {
  45.         int i = 0;
  46.  
  47.         while (i < numberOfFiles) {
  48.             try {
  49.                 BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\workspace\\MultiThreadHW\\text" + i + ".txt"));
  50.                 for (int j = 1; j <= 100000 + (int) (Math.random() * numberOfFiles + 1); j++) {
  51.                     writer.write(j + ". Line.");
  52.                     writer.newLine();
  53.                 }
  54.  
  55.                 writer.close();
  56.             } catch (FileNotFoundException ex) {
  57.                 Logger.getLogger(MultiThreadHW.class.getName()).log(Level.SEVERE, null, ex);
  58.             } catch (IOException ex) {
  59.                 Logger.getLogger(MultiThreadHW.class.getName()).log(Level.SEVERE, null, ex);
  60.             }
  61.             i++;
  62.         }
  63.     }
  64. }
  65.  
  66. public class FileThread extends Thread {
  67.  
  68.     private BufferedReader reader;
  69.     private int numberOfRows;
  70.  
  71.     public FileThread(FileReader fileReader) {
  72.         this.reader = new BufferedReader(fileReader);
  73.         numberOfRows = 0;
  74.     }
  75.  
  76.     public int getNumberOfRows() {
  77.         return numberOfRows;
  78.     }
  79.  
  80.     @Override
  81.     public void run() {
  82.         try {
  83.             while (reader.readLine() != null) {
  84.                 numberOfRows++;
  85.             }
  86.             reader.close();
  87.         } catch (IOException ex) {
  88.             Logger.getLogger(MultiThreadHW.class.getName()).log(Level.SEVERE, null, ex);
  89.         }
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement