Код IT
← Каталог

JVM, память и потоки — Синхронизация

Фрагмент из «JVM, память и потоки»: Синхронизация.

Java main.java
public class SynchronizedBlock {
    private final Object lock = new Object();
    private int value = 0;
    
    public void update(int newValue) {
        // Блокировка на частном объекте-замке
        synchronized (lock) {
            value = newValue;
        }
    }
    
    public void complexOperation() {
        // Блокировка на текущем экземпляре
        synchronized (this) {
            // критическая секция
        }
    }
    
    public static void classLevelOperation() {
        // Блокировка на классе
        synchronized (SynchronizedBlock.class) {
            // критическая секция для всего класса
        }
    }
}
public class SynchronizedBlock {
    private final Object lock = new Object();
    private int value = 0;
    
    public void update(int newValue) {
        // Блокировка на частном объекте-замке
        synchronized (lock) {
            value = newValue;
        }
    }
    
    public void complexOperation() {
        // Блокировка на текущем экземпляре
        synchronized (this) {
            // критическая секция
        }
    }
    
    public static void classLevelOperation() {
        // Блокировка на классе
        synchronized (SynchronizedBlock.class) {
            // критическая секция для всего класса
        }
    }
}