View Single Post
Old 11-07-2007, 12:19   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Premetto che se l'applicazione non è distributable, il server usa una sola istanza della classe servlet per rispondere a tutte le richieste (SRV2.2).

Un blocco sincronizzato su un monitor non condiviso equivale ad un blocco non sincronizzato. Non essendo il monitor condiviso non è infatti possibile che due Thread se lo contendano.

Una variabile locale non è condivisa per definizione.

Dunque questo:

Codice:
metodo() {
    Object monitor = new Object();
    synchronized(monitor) {
        fai qualcosa
    }
}
equivale a:

Codice:
metodo() {
    fai qualcosa;
}
Se il monitor è condiviso allora la sincronizzazione stabilisce una mutua esclusione tra i condividenti. Un campo è condiviso. Dunque:

Codice:
private final Object monitor = new Object();

metodo() {
    synchronized(monitor) {

    }
}
effettivamente esclude che due Thread possano entrare nel blocco in contemporanea.

Occhio che se cond è un campo delle istanze della tua servlet allora esiste la possibilità che siano creati più ExecutorThread.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso