22.07.2013 Views

PDF de la clase 34

PDF de la clase 34

PDF de la clase 34

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Sincronización en el JDK<br />

• El truco resi<strong>de</strong> en saber si un método necesita ser<br />

sincronizado. Muchos métodos <strong>de</strong> <strong>la</strong>s c<strong>la</strong>ses<br />

pre<strong>de</strong>finidas <strong>de</strong> Java ya están sincronizados.<br />

• Por ejemplo, <strong>la</strong> mayoría <strong>de</strong> los métodos <strong>de</strong> <strong>la</strong> c<strong>la</strong>se<br />

Vector están sincronizados por el motivo <strong>de</strong>scrito<br />

anteriormente.<br />

• Otro ejemplo: el método <strong>de</strong> <strong>la</strong> c<strong>la</strong>seComponent <strong>de</strong> Java<br />

AWT que agrega un objetoMouseListener a un Component<br />

(para que MouseEvents se registren en elMouseListener)<br />

también está sincronizado. Si comprueba el código fuente<br />

<strong>de</strong> AWT y Swing, encontrará que <strong>la</strong> firma <strong>de</strong> este método es<br />

public synchronized void<br />

addMouseListener(MouseListener l)<br />

Valores pre<strong>de</strong>terminados <strong>de</strong><br />

sincronización en Java<br />

• De forma pre<strong>de</strong>terminada (es <strong>de</strong>cir, a no ser<br />

que se <strong>de</strong>c<strong>la</strong>re lo contrario), los métodos NO<br />

están sincronizados.<br />

• Dec<strong>la</strong>rar un método como sincronizado<br />

ralentizará <strong>la</strong> ejecución <strong>de</strong>l programa, ya que <strong>la</strong><br />

adquisición y liberación <strong>de</strong> bloqueos genera una<br />

sobrecarga.<br />

• También introduce <strong>la</strong> posibilidad <strong>de</strong> un nuevo<br />

tipo <strong>de</strong> fallo l<strong>la</strong>mado interbloqueo.<br />

• Sin embargo, en muchos casos resulta<br />

esencial sincronizar los métodos para que el<br />

programa se ejecute correctamente.<br />

28<br />

27<br />

14

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!