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

    [JAVA] interrupt() & friends

    Ho capito cosa accade utilizzando i metodi interrupt, interrupted e isInterrupted.

    Il primo setta un flag a true.
    Il secondo, che è statico, verifica il flag di cui sopra sul currentThread. Se è settato a true, lo setta a false e ritorna true, altrimenti ritorna false.
    Il secondo, che non è statico e dunque può essere chiamato su un qualunque thread, controlla il flag e ritorna true o false a seconda dello stato del flag, senza alterare tale flag.

    Ora però non vedo dove potrebbe essere utile utilizzare gli ultimi due metodi: mentre il primo può essere utile nel caso in cui venga chiamata una sleep, join o wait (nel cui caso si genera una interruptedException) non vedo come possano essere utilizzati gli altri due metodi.

    Qualcuno può farmi degli esempi?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] interrupt() & friends

    Originariamente inviato da ragnonerodocet
    non vedo come possano essere utilizzati gli altri due metodi.
    Immagina un thread che sta facendo delle lunghe computazioni intensive con la CPU senza fare wait/join/sleep o I/O. Se da un altro thread invochi interrupt(), esso setta solamente un flag ... non causa un bel nulla nella tua computazione. Se vuoi che il thread sia "cooperativo" alla terminazione, puoi di tanto in tanto invocare uno dei due metodi per verificare se devi interrompere o no la computazione.

    E nel caso invece che il thread fa del I/O o usa wait/join/sleep, in tal caso è possibile che venga lanciato InterruptedException. Se catturi questa eccezione, hai 2 opzioni: o rilanci la eccezione o reimposti il flag di interrupted. Non fare nessuna delle due cose è in genere una pessima idea. E se reimposti il flag di interrupted, il codice "più sopra" può testare e quindi avere l'evidenza che è stata richiesta la interruzione.

    Leggi anche (se non l'hai già fatto): http://www.ibm.com/developerworks/ja...-jtp05236.html
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Se vuoi che il thread sia "cooperativo" alla terminazione, puoi di tanto in tanto invocare uno dei due metodi per verificare se devi interrompere o no la computazione.
    E in che modo?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.