Когда в классе Java выполняется синхронизируемый метод, объект которого блокируется?Когда в классе Java выполняется синхронизируемый метод, какой объект блокируется?
ответ
Для статического метода, класс заблокирован
class A {
static synchronized void method() {
нравится, хотя и не точно такой же, как и
class A {
static void method() {
synchronized(A.class) {
В этом прецедентного если одна тема уже выполняется этот метод, то никакая другая Thread не может вызвать этот метод.
Для метода экземпляра экземпляр заблокирован.
class A {
synchronized void method() {
это так же, как
class A {
void method() {
synchronized(this) {
В этом прецедентном если существует различные объекты экземпляра инициализируются то один Thread каждого экземпляра может войти в этот блок исполнения.
Примечание. Это распространенное заблуждение, что в методе есть блокировка или что метод заблокирован. Это не так, и на самом деле нет стандартного способа сделать это.
, если вам удалось понять вопрос, не могли бы вы его изменить, чтобы он стал яснее. –
@SleimanJneidi Вопрос достаточно ясен, если это тот ответ, который вы искали. Я часто не спускаю вниз, но некоторые люди сбрасывают вопросы, которые они рассматривают как действительно базовую Java, которую вы должны знать. –
Вы говорите, что ваш второй пример «не совсем то же самое», что и ваш первый, но существует ли какая-либо _practical_ разница между методом экземпляра «synchronized» и методом экземпляра, все тело которого является одним «синхронизированным (этим)» заявлением? «Практическая разница», я не имею в виду то, что вы могли бы сказать, изучив байт-коды; Я имею в виду, есть ли какой-либо чистый Java-модуль, который вы могли бы написать, чтобы выявить разницу между этими двумя случаями. –
- 1. Какой метод выполняется, когда приложение возобновляется с фона
- 2. Проверьте, какой метод выполняется
- 3. Когда метод run() выполняется в java-потоке?
- 4. Java-метод успешно выполняется внутри Java-агента, но не выполняется, если выполняется в Java-классе в коде базы данных
- 5. Что печатается, когда выполняется следующий метод myProgram() в классе SimpleIsland?
- 6. Когда выполняется нестатический блок в java?
- 7. Метод уменьшения в классе Reducer не выполняется
- 8. Java NullPointerException Когда я вызываю метод в пользовательском классе
- 9. Когда блок Scanner.nextLine() блокируется?
- 10. Уведомление о том, когда выполняется конкретный метод
- 11. Какой метод вызывает run()?
- 12. Как отслеживать, какой метод выполняется в java, когда я выполняю некоторую операцию, например, нажав кнопку
- 13. Когда метод angular.mock.inject() выполняется немедленно?
- 14. Когда вызывается основной метод java?
- 15. Java, синхронизирующий метод в классе
- 16. Метод Вызов в Java-классе
- 17. Java GUI: paintComponent метод в классе JComponent
- 18. Когда это метод «обновления» в классе, запущенном на Java?
- 19. Метод, определенный в классе, не найденном в Generic классе (Java)
- 20. Когда emacs блокируется
- 21. Какой объект Thing.this во внутреннем классе
- 22. Когда вы используете findViewById, какой объект вызывает этот метод?
- 23. Приложение Java блокируется в консоли
- 24. Метод DrawItem() выполняется повторно
- 25. Vagrant синхронизируемый файл не обновляется
- 26. NetworkOnMainThreadException, когда метод вызван в классе AsyncTask
- 27. Определение, когда объект содержится в классе
- 28. Общий метод геттер в классе в Java
- 29. Основной метод массива в классе - JAVA
- 30. java run метод в пользовательском классе
класс сам ('Класс >' объект) –
Голосование закрывается как не по теме, потому что этот вопрос не связан с проблемой программирования. I.e. В вопросе не содержится никакого примера кода, написанного OP, и он не спрашивает, почему код не соответствует ожиданиям OP. –