У меня есть некоторые проблемы с использованием синхронизированного ключевого слова в java. Я понимаю часть, где потоки получают блокировки на методах или блоках кода, но я не знаю, как использовать ее в следующем примере.Могу ли я синхронизировать 2 разных метода? java
У меня есть 2 разных потока (Thread A и Thead B), а Class1, содержащий список, содержит экземпляры Class2. Класс1.methodA(), вызываемый threadA, изменяет информацию в списке. Класс1.methodB(), вызываемый threadB, использует только информацию в списке.
Я пришел к выводу, что проблемы, которые возникают у меня в программе, происходят, когда Thread A изменяет данные в списке, пока Thread B его использует.
Должен ли я создать синхронизированный метод внутри Class1, который вызывает вызовы MethodA или MethodB (кажется мне лишним). Или может ли поток получить блокировку только на конкретном экземпляре класса 2, который изменяется?
Прошу прощения за любой плохой английский.
спасибо. Таким образом, поток получает блокировку в списке вместо блокировки блока кода? –
Да. В этом случае вы не беспокоитесь о том, что 2 потока выполняют вызовы одного и того же метода, но два метода получают доступ к одной и той же общей переменной. –