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) {
// критическая секция для всего класса
}
}
}