Ciao a tutti,
ho un piccolo problema.
Nel mio programma sto gestendo un thread ma non riesco a interromperne l'esecuzione.
Posto di seguito il codice:
nel main faccio partire il thread
codice:
istanza.getVeicoli().get(0).start();
codice:
public void run()
{
while(!stopThread)
{
try {
esecuzione();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
this.stopRunning();
}
}
}
e il metodo stopRunning è il seguente
codice:
public void stopRunning()
{
stopThread = true;
}
Nel metodo esecuzione() è racchiuso il comportamento del thread tra cui la chiamata a un metodo synchronized che non è della classe del thread ma di un'altra classe. Mi spiego meglio: il thread è della classe Veicolo, mentre il metodo synchronized è della classe Istanza. La classe Istanza contiene tra i suoi attributi un certo numero di Veicolo.
Una cosa che capisco poco è inoltre questa: fatta partire l'esecuzione del main, in realtà prima mi stampa le azioni che sono scritte successivamente all'avvio del thread. Come mai questo avviene?