Advertisement
salercode

Lab2OsZad4

Mar 10th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.08 KB | None | 0 0
  1. import java.util.HashSet;
  2. import java.util.Random;
  3. import java.util.Scanner;
  4.  
  5. public class CountThree {
  6.  
  7.     public static int NUM_RUNS = 100;
  8.     /**
  9.      * Promenlivata koja treba da go sodrzi brojot na pojavuvanja na elementot 3
  10.      */
  11.     int count = 0;
  12.     /**
  13.      * TODO: definirajte gi potrebnite elementi za sinhronizacija
  14.      */
  15.  
  16.  
  17.     static final Object lock=new Object();
  18.  
  19.     public void init() {
  20.  
  21.  
  22.     }
  23.  
  24.     class Counter extends Thread {
  25.  
  26.         public void count(int[] data) throws InterruptedException {
  27.             // da se implementira
  28.             int local=0;
  29.             for(int i=0;i<data.length;i++)
  30.             {
  31.                 if(data[i]==3)
  32.                 {
  33.                     local++;
  34.                 }
  35.  
  36.             }
  37.             synchronized (lock)
  38.             {
  39.                 count+=local;
  40.             }
  41.  
  42.         }
  43.         private int[] data;
  44.  
  45.         public Counter(int[] data) {
  46.             this.data = data;
  47.         }
  48.  
  49.         @Override
  50.         public void run() {
  51.             try {
  52.                 count(data);
  53.             } catch (Exception e) {
  54.                 e.printStackTrace();
  55.             }
  56.         }
  57.     }
  58.  
  59.     public static void main(String[] args) {
  60.         try {
  61.             Naizmenicno environment = new Naizmenicno();
  62.             environment.start();
  63.         } catch (Exception ex) {
  64.             ex.printStackTrace();
  65.         }
  66.     }
  67.  
  68.     public void start() throws Exception {
  69.  
  70.         init();
  71.  
  72.         HashSet<Thread> threads = new HashSet<Thread>();
  73.         Scanner s = new Scanner(System.in);
  74.         int total=s.nextInt();
  75.  
  76.         for (int i = 0; i < NUM_RUNS; i++) {
  77.             int[] data = new int[total];
  78.             for (int j = 0; j < total; j++) {
  79.                 data[j] = s.nextInt();
  80.             }
  81.             Counter c = new Counter(data);
  82.             threads.add(c);
  83.         }
  84.  
  85.         for (Thread t : threads) {
  86.             t.start();
  87.         }
  88.  
  89.         for (Thread t : threads) {
  90.             t.join();
  91.         }
  92.         System.out.println(count);
  93.  
  94.  
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement