Czesc,ogarniam watki w javie i mam pytanie odnosnie zakladania blokady na metody.Ponizej znajduje sie moj kod
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
class Counter {
private int counter = 0;
Counter() {
}
public void increment() {
counter++;
}
public void decrement() {
counter--;
}
public int getCounter() {
return counter;
}
}
class ThreadOperations implements Runnable {
Counter c;
Lock lock;
ThreadOperations(Counter c) {
this.c = c;
lock = new ReentrantLock();
}
@Override
public void run() {
lock.lock();
try {
c.decrement();
c.increment();
System.out.println("Counter" + c.getCounter());
} finally {
lock.unlock();
}
}
}
public class ThreadClass {
public static void main(String[] args) throws InterruptedException {
Counter c = new Counter();
for (int i = 0; i < 1000; i++) {
Thread t = new Thread(new ThreadOperations(c));
t.start();
}
}
}
i wydawalo mi sie ze zalozenie blokady w run spowoduje ze dostane za kazdym razem napis 0, a tak sie nie dzieje. Moglby mi ktos wytlumaczyc jak dziala zakladanie blokady na metode?
Z gory dzieki za odpowiedz