Синхронизация в Java используется для контроля доступа к общим ресурсам из нескольких потоков. Она позволяет избежать состояния гонки, при котором несколько потоков пытаются получить доступ к одному и тому же ресурсу одновременно, что может привести к непредсказуемым результатам. Синхронизация в Java достигается с помощью механизма блокировки. В Java каждый объект имеет свой монитор (или блокировку), который можно использовать для синхронизации доступа к этому объекту из нескольких потоков. Когда поток заходит в блок synchronized (синхронизированный блок) связанный с определенным объектом, он получает монитор этого объекта и удерживает его до тех пор, пока не выйдет из блока synchronized. Вот пример кода на Java, который демонстрирует синхронизацию: public class Main {
public static void main(String[] args) {
SharedResource sharedResource = new SharedResource();
Thread thread1 = new Thread(new MyRunnable(sharedResource));
Thread thread2 = new Thread(new My