a cura di Dario Dariol
Esercizio 001
Considerate le seguenti tre diverse versioni di una stessa classe (in rosso sono indicate le modifiche rispetto alla versione originaria TestA).

class TestA {
  static int i = 0, j = 0;
  static void one() { i++; j++; }
  static void two() { System.out.println("i-j = " + (i-j));}
}

class TestB {
  static int i = 0, j = 0;
  static synchronized void one() { i++; j++; }
  static synchronized void two() { System.out.println("i-j = " + (i-j));}
}

class TestC {
  static volatile int i = 0, j = 0;
  static void one() { i++; j++; }
  static void two() { System.out.println("i-j = " + (i-j));}
}

Considerate adesso rispettivamente tre esempi in cui un thread chiama ripetutamente il metodo one e un altro thread chiama ripetutamente il metodo two.
Scopo dell'esercizio  riempire ognuna delle 4 caselle colorate della seguente tabella con i minimi e massimi valori stampabili nei 3 casi.

 
Possibile Stampa (i-j) Esempio 1 Esempio 2 Esempio 3
minimo valore stampabile ??? 0 ???
massimo valore stampabile ??? 0 ???
    Ad esempio nella casella di intersezione tra "minimo valore stampabile" ed "Esempio 1" si deve inserire il minimo numero intero che si pensa  possa essere stampato dell'esempio 1 (cioè utilizzando TestA).

    Io ho gia' riempito le 2 risposte più facili: ho cioè detto che nell'esempio 2 (cioè utilizzando TestB) il minimo e massimo valore stampabile sono entrambi sempre eguali a zero.

    Ribadisco le regole del gioco:

    • Non bisogna compilare ed eseguire nessun pezzo di codice: non sono interessato a sapere che con certe implementazioni della JVM si ottengono certi risultati mentre con altre implementazioni altri risultati. Sono invece interessato a quali siano l'insieme di risultati validi così come specificato dal linguaggio Java: cioè quali sono i risultati che un buon programmatore Java si può aspettare da una qualsiasi JVM che soddisfi le specifiche di Java?
    • Non occorre che inviate una soluzione del quiz a me o alla rivista. La soluzione sara' fornita nel prossimo numero. Una volta nota la soluzione (quindi solo dal prossimo mese in poi) potete allora eventualmente contestarla e/o commentarla inviandomi una email. Io sarò ben lieto di pubblicare e discutere tutti i pareri ricevuti.
   



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