Junior — Middle
Можеш ли да обясниш как да използваш ключовата дума synchronized за синхронизиране на нишки?
sobes.tech AI
Отговор от AI
Ключевое слово synchronized в Java используется для обеспечения синхронизации потоков, чтобы избежать проблем с одновременным доступом к общим ресурсам.
Когда метод или блок кода объявлен как synchronized, только один поток может выполнять этот код в данный момент для данного объекта (монитора). Это предотвращает состояния гонки и обеспечивает корректность данных.
Пример использования synchronized метода:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public int getCount() {
return count;
}
}
Здесь метод increment синхронизирован, поэтому если несколько потоков вызывают его одновременно, они будут выполняться по очереди, не нарушая целостность переменной count.
Также можно синхронизировать блок кода внутри метода:
public void increment() {
synchronized(this) {
count++;
}
}
Это даёт более гибкий контроль над синхронизацией.