Это 30-й день моего участия в Gengwen Challenge. Чтобы узнать подробности о мероприятии, пожалуйста, проверьте:Обновить вызов.
В предыдущей статье мы потратили много времени на анализ и понимание
volatile
Ключевые слова, заинтересованные студенты могут выйти и повернуть налево«Здравствуйте, расскажите, пожалуйста, о ключевом слове volatile? (полная статья)". законченныйvolatile
Конечно, об этом нельзя говорить.synchronized
, в параллельном программировании это ключевое слово всегда существовало на старшем уровне, мы привыкли называть еготяжелый замок, но сJava SE 1.6
После версии,Java
командная параsynchronized
Он был тщательно оптимизирован, так что он может быть легким или тяжелым, соленым или сладким (ерунда). Следуйте моему видению, и давайте посмотрим, что это такое!
1. Душевная пытка
Прежде чем перейти к сути, это все еще клишированная пытка души, вы готовы?
- что
synchronized
, как он используется? -
synchronized
Два способа реализовать блокировку объекта и как это работает? - говорить о
synchronized
Заблокировать процесс эскалации? -
synchronized
а такжеvolatile
разница?
Я не знаю, сложно ли это для вас, позвольте мне провести вас, чтобы проанализировать эту технологию от более мелкого к более глубокому.
2. Базовое приложение
2.1 Метод блокировки
synchronized
Существует три метода блокировки, включая модифицированные статические методы, модифицированные методы экземпляра и модифицированные блоки кода.Различные методы блокировки влияют на степень детализации управления блокировками и должны определяться в соответствии с фактической инженерной средой.
- Статический метод действует на текущий объект класса, то есть гранулярность блокировки - это сам объект класса.Для входа в статический метод необходимо получить блокировку объекта класса.
- Метод экземпляра действует на экземпляр текущего класса, то есть гранулярность блокировки — это экземпляр класса, и для входа в метод экземпляра необходимо получить блокировку экземпляра класса.
- Кодовой блок действует на указанном объекте блокировки, то есть гранулярность блокировки является указанным объектом блокировки, а блокировка указанного объекта необходимо приобрести для ввода блока кода.
2.2 Применение кода
public class SyncExample {
private static final Object LOCK = new Object();
private static int i = 1;
public synchronized static void increase1(){
i++;
}
public synchronized void increase2(){
i++;
}
public void increase3(){
synchronized (LOCK){
i++;
}
}
}
#increase1
Метод представляет собой модифицированный статический метод;#increase2
Метод представляет модифицированный метод экземпляра;#increase1
Метод представляет собой оформленный блок кода.
Длина длинная, чтобы продолжить чтение, пожалуйста, нажмитеЗдравствуйте, расскажите о своем понимании Synchronized? (два)
Брат, не паникуй! Не стесняйтесь оставлять лайки, обсуждать и комментировать. Добро пожаловать в колонку интервьюНе паникуйте, когда сталкиваетесь | Параллельное программирование на Java, Не беспокойтесь о повышении зарплаты во время собеседования. Также добро пожаловать, чтобы следовать за мной, я должен быть лучшим человеком.