Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    44

    [Java] terminare l'esecuzione di un thread

    Ciao a tutti!! Ho un problema, ho un thread che esegue il seguente metodo run:

    codice:
    try {
    	Socket s = servSock.accept();
    	...
    } catch (IOException ex) {
    	System.out.println(ex);
    Questo thread si bloccherà sulla accept(). In un altro thread, al verificarsi di una condizione, vorrei interrompere il thread che esegue il metodo run sopra indicato, cioè non voglio più che accetti connessioni.

    Come posso fare?

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

    Re: [Java] terminare l'esecuzione di un thread

    Originariamente inviato da kill9
    cioè non voglio più che accetti connessioni.

    Come posso fare?
    close() sul ServerSocket. La accept() lancerà quindi un SocketException.

    L'alternativa è impostare un timeout sul ServerSocket (setSoTimeout()), la accept() lancerà SocketTimeoutException. A quel punto controlli una qualche variabile di stato. Se non deve terminare, ripeti la accept.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Puoi utilizzare il metodo setSoTimeout e fissare così un tempo di timeout per il metodo accept. Scaduto questo tempo vai a controllare il valore di una variabile booleana settata dall'altro metodo. Se devi continuare ad ascoltare richiami nuovamente accept...altrimenti esci:

    Codice PHP:

    boolean continueToListen
    =...;  //variabile booleana che viene settata periodicamente dall'altro thread

    while(continueToListen){

       ...
       
    servSock.setSoTimeout(60000); //1 minuto
       
    Socket s servSock.accept();
       ...

    Questa è la prima soluzione che mi viene... ma penso ci sia qualcosa di più "pulito"
    Al mio segnale... scatenate l'inferno!

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.