Quote Originariamente inviata da james101 Visualizza il messaggio
Salve,sono alle prime armi con il multithread in java, sto cercando di scrivere un programma che esegue un thread, questo thread va in ciclo infinito eseguendo una sommatoria (all'infinito) mi servirebbe che da main (o dal thread stesso) dopo un tot di tempo il thread termini la sua esecuzione. Cosa potrei usare?
Se il thread fa solo computazioni (niente I/O), il concetto della interruzione tramite interrupt() non funziona. In questi casi si deve usare una variabile di "flag" (un boolean è ok) della interruzione che il thread di tanto in tanto dovrà testare. Visto che hai un ciclo .. potrebbe testarlo proprio ad ogni ciclo. O al limite ogni tot. cicli.

Il punto è che tale variabile deve essere una variabile di istanza e oltretutto l'accesso alla variabile deve essere "sincronizzato" tra thread, quindi o fatto con l'acquisizione di un lock intrinseco degli oggetti (synchronized) o come scenario semplice mettendo la variabile come volatile.

Quindi il thread B che esegue computazioni, ogni tanto testerà quella variabile. E il thread A che vuole interrompere B setterà quella variabile es. a true.