Salve ragazzi ho bisogno di sapere se ho compreso bene alcuni passaggi sulle interruzioni fra threads.
Un thread t1 può interrompere un altro thread t2 tramite l'invocazione:
in java.lang.Thread.codice:t2.interrupt()
Sappiamo però che questa invocazione non comporta una vera e propria interruzione ma in realtà un flag all'interno di t2 viene settato a true.
Se t2 è running non si accorgerà mai dell'interruzione a meno che non venga invocato il metodo statico Thread.iterrupted() che lancia l'eccezione InterruptedException e resetta il flag a false.
<In particolare è corretta l'affermazione in grassetto?>
Se t2 passa da uno stato running a non running (o è gia not running al momento dell'invocazione di interrupt()) tramite un wait(), join() o sleep() l'eccezione verrà lanciata senza ricorrere al metodo statico del caso running descritto precedentemente e allo stesso tempo il flag verrà resettato.
Vorrei ora sapere se è così che funziona in realtà o sono io ad aver capito male.
Grazie mille![]()

Rispondi quotando