CCCPaste

Untitled

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class Main {
    public static void main(String[] args) {
        Brojac brojac = new Brojac();
    Brojac brojac2 = new Brojac();
        t t1 = new t(1, brojac);
        t t2 = new t(2, brojac);
    t1.start();
    t2.start();
    try {
        t1.join();
        t2.join();
    }
    catch (InterruptedException ex) {
        ex.printStackTrace();
    }
        System.out.println(brojac.getCnt());
        System.out.println(brojac2.getCnt());


 }
}
class t extends  Thread {
    int id;
    static Brojac br;
    public t(int _id, Brojac br) {
        id = _id;
        this.br = br;
    }

    @Override
    public void run() {
      for(int i = 0; i < 20; i++) {
          br.zgolemi_brojac_so_mutex();
      }
    }
}
class Brojac  {
    private static int cnt = 0;
    private static Lock lock = new ReentrantLock();
//    public static void zgolemi_brojac() {
//        cnt++;
//    }
    public void zgolemi_brojac_so_mutex() {
        lock.lock();
        cnt++;
        lock.unlock();
    }
    public static int getCnt() {
        return cnt;
    }
}