2015-10-16 1 views
-3

Когда в классе Java выполняется синхронизируемый метод, объект которого блокируется?Когда в классе Java выполняется синхронизируемый метод, какой объект блокируется?

+0

класс сам ('Класс ' объект) –

+0

Голосование закрывается как не по теме, потому что этот вопрос не связан с проблемой программирования. I.e. В вопросе не содержится никакого примера кода, написанного OP, и он не спрашивает, почему код не соответствует ожиданиям OP. –

ответ

0

Для статического метода, класс заблокирован

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 каждого экземпляра может войти в этот блок исполнения.

Примечание. Это распространенное заблуждение, что в методе есть блокировка или что метод заблокирован. Это не так, и на самом деле нет стандартного способа сделать это.

+0

, если вам удалось понять вопрос, не могли бы вы его изменить, чтобы он стал яснее. –

+0

@SleimanJneidi Вопрос достаточно ясен, если это тот ответ, который вы искали. Я часто не спускаю вниз, но некоторые люди сбрасывают вопросы, которые они рассматривают как действительно базовую Java, которую вы должны знать. –

+0

Вы говорите, что ваш второй пример «не совсем то же самое», что и ваш первый, но существует ли какая-либо _practical_ разница между методом экземпляра «synchronized» и методом экземпляра, все тело которого является одним «синхронизированным (этим)» заявлением? «Практическая разница», я не имею в виду то, что вы могли бы сказать, изучив байт-коды; Я имею в виду, есть ли какой-либо чистый Java-модуль, который вы могли бы написать, чтобы выявить разницу между этими двумя случаями. –

Смежные вопросы