prometheus800

ОС Лаб 2: Counter

Mar 23rd, 2021
959
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.18 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.util.HashSet;
  4. import java.util.concurrent.locks.Lock;
  5. import java.util.concurrent.locks.ReentrantLock;
  6.  
  7. public class CountLetter {
  8.  
  9.     /**
  10.      * Promenlivata koja treba da go sodrzi brojot na pojavuvanja na bukvata E
  11.      */
  12.     int count = 0;
  13.     /**
  14.      * TODO: definirajte gi potrebnite elementi za sinhronizacija
  15.      */
  16.     public static Lock lock;
  17.  
  18.     public void init() {
  19.         lock = new ReentrantLock();
  20.     }
  21.  
  22.     class Counter extends Thread {
  23.  
  24.         public void count(String data) {
  25.             // da se implementira
  26.             for (int i = 0; i < data.length(); i++) {
  27.                 {
  28.                     if (data.charAt(i) == 'e' || data.charAt(i) == 'E') {
  29.                         try {
  30.                             lock.lock();
  31.                             count++;
  32.  
  33.                         } finally {
  34.                             lock.unlock();
  35.                         }
  36.                     }
  37.                 }
  38.             }
  39.         }
  40.  
  41.         private String data;
  42.  
  43.         public Counter(String data) {
  44.             this.data = data;
  45.         }
  46.  
  47.         @Override
  48.         public void run() {
  49.             try {
  50.                 count(data);
  51.             } catch (Exception e) {
  52.                 e.printStackTrace();
  53.             }
  54.         }
  55.     }
  56.  
  57.     public static void main(String[] args) {
  58.         try {
  59.             CountLetter environment = new CountLetter();
  60.             environment.start();
  61.         } catch (Exception ex) {
  62.             ex.printStackTrace();
  63.         }
  64.     }
  65.  
  66.     public void start() throws Exception {
  67.         init();
  68.  
  69.         HashSet<Thread> threads = new HashSet<>();
  70.         BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
  71.  
  72.         String pom = bf.readLine();
  73.         String[] data = pom.split(" ");
  74.  
  75.         for (String datum : data) {
  76.             Counter c = new Counter(datum);
  77.             threads.add(c);
  78.         }
  79.  
  80.         for (Thread t : threads) {
  81.             t.start();
  82.         }
  83.  
  84.         for (Thread t : threads) {
  85.             t.join();
  86.         }
  87.         System.out.println(count);
  88.     }
  89. }
  90.  
Add Comment
Please, Sign In to add comment