a cura di Dario Dariol
 
     

    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.




MokaByte®  è un marchio registrato da MokaByte s.r.l.

Java® è un marchio registrato da Sun Microsystems; tutti i diritti riservati

E' vietata la riproduzione anche parziale
Per comunicazioni inviare una mail a
mokainfo@mokabyte.it