Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 3.13 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.             }
  29.  
  30.             for (int i = 0; i < numberOfFiles; i++) {
  31.                 filethreads.get(i).join();
  32.                 sumOfRowsFromAllFiles += filethreads.get(i).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.         int randomNumber;
  47.         while (i < numberOfFiles) {
  48.             try {
  49.                 randomNumber = (int) (Math.random() * numberOfFiles + 1);
  50.                 BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\workspace\\MultiThreadHW\\text" + i + ".txt"));
  51.                 for (int j = 1; j <= 100000 + randomNumber; j++) {
  52.                     writer.write(j + ". Line.");
  53.                     writer.newLine();
  54.                 }
  55.  
  56.                 writer.close();
  57.             } catch (FileNotFoundException ex) {
  58.                 Logger.getLogger(MultiThreadHW.class.getName()).log(Level.SEVERE, null, ex);
  59.             } catch (IOException ex) {
  60.                 Logger.getLogger(MultiThreadHW.class.getName()).log(Level.SEVERE, null, ex);
  61.             }
  62.             i++;
  63.         }
  64.     }
  65. }
  66.  
  67. public class FileThread extends Thread {
  68.  
  69.     private BufferedReader reader;
  70.     private int numberOfRows;
  71.  
  72.     public FileThread(FileReader fileReader) {
  73.         this.reader = new BufferedReader(fileReader);
  74.         numberOfRows = 0;
  75.     }
  76.  
  77.     public int getNumberOfRows() {
  78.         return numberOfRows;
  79.     }
  80.  
  81.     @Override
  82.     public void run() {
  83.         try {
  84.             while (reader.readLine() != null) {
  85.                 numberOfRows++;
  86.             }
  87.             reader.close();
  88.         } catch (IOException ex) {
  89.             Logger.getLogger(MultiThreadHW.class.getName()).log(Level.SEVERE, null, ex);
  90.         }
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement