Originariamente inviato da desa
"Sfiduciato"... ma figurati!
La programmazione concorrente con i thread è una cosa complessa: per dirti, in università avevo fatto un esame solo su questo argomento! E' normale avere delle difficoltà agli inizi!
Quasi sempre quando programmi non esiste una cosa "giusta" o una cosa "sbagliata": ci sono tante possibili soluzioni, alcune delle quali più pratiche, altre più efficienti... uno dei compiti più complessi è infatti riuscire ad identificare la migliore, che solitamente è in realtà il "miglior compromesso".
La struttura della tua classe è sensata: GET e POST sono sicuramente due cose diverse, ma a mio parere (per l'utilizzo che ne fai) presentano dei tratti in comune per cui è ragionevole racchiuderle insieme.
Secondo me la soluzione più pratica per te è passare al thread in fase di costruzione (o anche tramite un metodo "set") un parametro booleano che verrà valutato dal metodo run(): se true invocherà la GET, se false invocherà la POST. O viceversa, naturalmente.
Soluzione un pochino più complessa, è definire un metodo astratto sendRequest() nella classe HttpClient (che sarà astratta a sua volta) che verrà ridefinito con le operazioni da eseguire in due sottoclassi GetHttpClient e PostHttpClient.
Prova a pensarci un po'!