Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [JAVA] Thread

  1. #1

    [JAVA] Thread

    Ho iniziato adesso ad entrare nel tunnel dei thread.

    Vorrei fare una domanda banale:

    c'è la possibilità di creacre Thread in due maniere:

    - ereditando dalla superclasse Thread ed estendendo tale classe. Nella sottoclasse dovrò fare un overriding della funzione run(). Nel main creerò un nuovo oggetto e farò partire il tutto con il metodo start()

    - implementando l'interfaccia runnable, definendo il metodo run. Nel main creerò un oggetto che passerò come parametro ad un altro oggetto creato della classe Thread, sul quale ovviamente invocherò start()

    Allora faccio una domanda...

    Perchè questi due metodi? Cosa cambia dall'uno all'altro???

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

    Re: [JAVA] Thread

    Originariamente inviato da ragnonerodocet
    Perchè questi due metodi? Cosa cambia dall'uno all'altro???
    La implementazione di Runnable è più flessibile. Sai sicuramente che una classe può estendere solamente un'altra classe mentre può implementare tutte le interfacce che vuole.
    Pertanto se la tua classe estende già qualcos'altro (es. Applet/JApplet, per fare un esempio tipico) non potresti più estendere Thread.

    Concettualmente sarebbe da preferire la implementazione di Runnable. La estensione di una classe è da sfruttare per la "specializzazione", ovvero per definire una classe che è un caso più specifico della super classe.
    In questo caso non devi "specializzare" Thread, la tua classe non è un caso specifico di Thread, cioè non cambia il comportamento di un thread .... hai semplicemente bisogno di far eseguire "qualcosa" in un thread di esecuzione separato.

    E infine un Runnable ha una utilità anche in altri contesti, ad esempio con il java.util.Timer (dove TimerTask è un Runnable), nei "thread-pool" e in AWT/Swing.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava 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 © 2025 vBulletin Solutions, Inc. All rights reserved.