|
|
Esercizio
007 - Metodi synchronized
Ricordandoci
che (vedi la specifica
di Java):
A
synchronized method automatically performs a lock action when it is invoked;
its body is not executed until the lock action has successfully completed.
consideriamo
il seguente esempio:
class
Sample {
int a;
synchronized void one(){
a=1;
System.out.println("a=" + a);
}
void two(){
a=2;
}
}
Supponendo
che un thread chiami ripetutamente il metodo one
e un altro chiami ripetutamente two
su una identica istanza di Sample,
quale fra le seguenti possibilità di stampa sono vere?
-
l'applicazione
stampa solo infinite stringhe "a=1";
-
l'applicazione
stampa solo infinite stringhe "a=2";
-
l'applicazione
stampa infinite stringhe "a=1" e "a=2" alternate fra di loro (dopo una "a=1" c'è sempre una "a=2" e dopo una "a=2" c'è sempre una "a=1");
-
l'applicazione
stampa infinite stringhe "a=1" e "a=2" casualmente mischiate tra di loro;
-
l'applicazione
non stampa nessuna stringa e si blocca;
-
l'applicazione
stampa una sola stringa "a=1" e poi si blocca;
-
l'applicazione
stampa alcune stringhe "a=1" e poi si blocca.
La
soluzione, come al solito, fra due mesi su queste pagine.
|
|
|
|