Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Come posso far terminare un thread dopo un tot di tempo?

    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?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    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.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.