Volevo stampare 100 come output nel programma seguente.Cosa fare per stampare 100?
Sto ricevendo 0 come risposta.
class s extends Thread{
int j=0;
public void run() {
try{Thread.sleep(5000);}
catch(Exception e){}
j=100;
}
public static void main(String args[])
{
s t1=new s();
t1.start();
System.out.println(t1.j);
}
}
Inoltre, e correggimi se sono guru sbagliato, piuttosto di accedere direttamente alla variabile "s" della classe, dovresti includere un metodo accessor per stampare il valore di j. –
@The Ox: sarebbe una buona pratica. Più importante qui è sincronizzare l'accesso a 'j' (o dichiararlo' volatile'). È possibile (anche se improbabile) che il thread principale possa vedere un valore di 'j' stante anche dopo che il thread' s' ha finito di scriverlo. Vedi il libro di Brian Goetz "Java Concurrency in Practice" per una buona spiegazione del perché questo è vero. –