public class SynchronizedMethod {
private int counter = 0;
// Синхронизация на уровне экземпляра
public synchronized void increment() {
counter++;
}
// Синхронизация на уровне класса
public static synchronized void staticIncrement() {
// блокировка на классе SynchronizedMethod.class
}
public int getCounter() {
return counter;
}
public static void main(String[] args) throws InterruptedException {
SynchronizedMethod instance = new SynchronizedMethod();
Thread t1 = new Thread(() -> {
for (int i = 0; i < 10000; i++) instance.increment();
});
Thread t2 = new Thread(() -> {
for (int i = 0; i < 10000; i++) instance.increment();
});
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println("Итоговое значение: " + instance.getCounter()); // 20000
}
}
public class SynchronizedMethod {
private int counter = 0;
// Синхронизация на уровне экземпляра
public synchronized void increment() {
counter++;
}
// Синхронизация на уровне класса
public static synchronized void staticIncrement() {
// блокировка на классе SynchronizedMethod.class
}
public int getCounter() {
return counter;
}
public static void main(String[] args) throws InterruptedException {
SynchronizedMethod instance = new SynchronizedMethod();
Thread t1 = new Thread(() -> {
for (int i = 0; i < 10000; i++) instance.increment();
});
Thread t2 = new Thread(() -> {
for (int i = 0; i < 10000; i++) instance.increment();
});
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println("Итоговое значение: " + instance.getCounter()); // 20000
}
}