2011-09-23 24 views
8

Cuando se usa un bloque sincronizado para la sincronización en una instancia de objeto, los subprocesos compiten para entrar en el monitor implícito del objeto. Y una vez, cualquier hilo en particular entra en el monitor, cualquier otro hilo tiene que esperar para entrar en él. Luego,sincronización de objetos

synchronized(object){ 
    // some code here 
    // no function call 
} 

no se debe exigir que se tome ningún tipo de objeto en particular. Por lo tanto, cualquier tipo de objeto se puede usar aquí porque cada objeto tiene su monitor implícito.

Amablemente, respóndeme, ¿es verdad?

+6

¡Tan educado y bien educado! –

+0

@Josh: en realidad, todo lo contrario: usar el término "programadores respetados" implica que algunos de nosotros * no somos * (lo que es cierto, por supuesto). – MusiGenesis

+3

Todo el mundo que sea lo suficientemente sensato como para entender que estaba saludando a todos, debe ser recibido nuevamente. Gracias Señor Pordon, por notar mi respeto por todos. Y MusiGenesis, todos los que se consideran dignos de respeto son respetables. Aquellos que pensaban que mi respeto era para ellos, estaban contentos y otros ............ – user961690

Respuesta

9

Sí, cada objeto de Java puede actuar como un monitor.

Y puesto que esta es una respuesta tan corto, por bono, esta es una lectura interesante: Does the JVM create a mutex for every object in order to implement the 'synchronized' keyword? If not, how?

También tenga en cuenta que C# hace algo similar con sus objetos, pero tipos de valores también tienen (que no son monitores)

+0

Muchas gracias querido – user961690

+7

¡Me encanta el "querido"! Al igual que mi abuela estaba publicando en StackOverflow ... –

+0

¿Qué significa ese "querido"? –

5

Solo tenga en cuenta que si tiene una variable que es null, no puede bloquearla. Además, aunque cosas como Integer son objetos, un int o float es no. Puede bloquear un Integer o int[], pero no un int.

+1

Muchas gracias querido – user961690

Cuestiones relacionadas