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.