Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Classe Thread.

  1. #1

    Classe Thread.

    Buonasera a tutti...
    mi sono appena registrato in quanto avevo bisogno di un piccolo chiarimento sui Thread. Precisamente, l'argomento in questione è il metodo join di questa classe.

    Ho due Thread: A, B.

    Il metodo join, a quanto ho capito, aspetta che il Thread in esecuzione termini, per far partire l'altro Thread.

    Il mio dubbio però è questo: Se il metodo join viene invocato dal Thread A, vuol dire che quest'ultimo Thread aspetta che termini il Thread B per riprendere la sua esecuzione o è l'inverso?

    Inoltre è possibile avere un piccolo esempio per chiarirmi meglio le idee?

    Grazie infinitamente .
    ..:: ( Erwittsy ) ::..

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

    Re: Classe Thread.

    Originariamente inviato da Erwittsy
    Il metodo join, a quanto ho capito, aspetta che il Thread in esecuzione termini, per far partire l'altro Thread.
    No, sospende il thread corrente (quello che sta eseguendo il join) in attesa che il thread X su cui hai invocato il join() termini.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Metodo join();

    <<No, sospende il thread corrente (quello che sta eseguendo il join) in attesa che il thread X su cui hai invocato il join() termini.>>

    Ehm, quindi supponiamo allora di avere due Thread;

    ClasseRunnable oggetto = new ClasseRunnable();
    Thread a = new Thread(oggetto);
    Thread b = new Thread(oggetto);


    a.join();

    a.start();
    b.start();

    In questo caso cosa succede?
    ..:: ( Erwittsy ) ::..

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

    Re: Metodo join();

    Originariamente inviato da Erwittsy
    In questo caso cosa succede?
    No ... non hai ancora capito:

    codice:
    ....
    Thread a = new Thread(.....);
    
    a.start();
    
    a.join();
    ....
    Prima fai partire il thread con start(). start() si limita solo a mettere il thread nello stato di "runnable" (che non vuol dire che viene immediatamente invocato il run()!!!) e ritorna praticamente subito. Il nuovo thread passerà poi allo stato di "running" in base alle decisioni dello scheduler.

    Quindi si continua di seguito nel thread corrente. Se devi fare qualcosa tale per cui hai bisogno che l'altro thread finisca, allora puoi attendere la terminazione di quel thread appunto con join().

    join() blocca il thread corrente finché il thread su cui l'hai invocato termina.

    Più chiaro ora .... o ancora no?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5

    ...

    Si si^^ ora è tutto chiaro...grazie mille^^
    ..:: ( Erwittsy ) ::..

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.