1.
Korrekt du erzeugst immer einen neuen Thread bei Klick.
Dadurch erzeugst ggfs. viele Threads, aber da du sie keiner Variable zuweist, werden Sie vom Garbage Collector aufgeräumt/gelöscht.
2.
Siehe Antwort 1.
Der Garbage Collector räumt den Thread weg, wenn er nicht mehr genutzt wird.
3.
Ja, allerdings musst du den Thread selbst stoppen/zerstören.
Falls du den Thread stoppst und es laufen noch Operationen wird eine InterruptedException geworfen.
Noch ein Tipp.
Aktuell wird bei jedem Klick eine neue Verbindung zum Socket aufbaust. Klickst du also 5x werden 5x Verbindungen aufgebaut, Daten übertragen und die Verbindung beendet,
Im Optimalfall sollte man versuchen die Verbindung zu halten, falls noch mehr Daten erwartet. Da es je nach Datenmenge schon Performance-Probleme geben kann, wenn du jedes mal die Verbindung neu aufbauen musst.
(Kenne deinen genauen Usecase jetzt nicht)