В Java существует несколько способов синхронизации для обеспечения безопасности выполнения кода в многопоточной среде: Пример использования синхронизированного блока: synchronized (объект) {
// Критическая секция } Пример использования синхронизированного метода: public synchronized void synchronizedMethod() {
// Критическая секция } Пример использования объекта ReentrantLock: private Lock lock = new ReentrantLock();
public void someMethod() {
lock.lock();
try {
// Критическая секция } finally {
lock.unlock();
}
} Пример использования Condition: private Lock lock = new ReentrantLock();
private Condition condition = lock.newCondition();
public void awaitCondition() throws InterruptedException {
lock.lock();
try {
while (!conditionMet) {
condition.await();
}
// Продолжение выполнения после удовлетворения условия } finally {
lock.unlock();
}
}
public void signalCondition() {
lo