Sto facendo un gioco basato su una scacchiera con architettura client/server.

Ho già realizzato il client con la sua interfaccia grafica e il server con la logica del gioco compresa la parte riguardante la comunicazione via TCP/IP tramite socket del server.

Mi manca di implementare la parte di comunicazione del client con il server.
Ho questo problema: come faccio a gestire nel client gli eventi che mi provengono dall'interfaccia e quelli che mi arrivano dalle socket?

Creo un thread dedicato alla gestione della comunicazione via socket?

Come faccio a far comunicare il mio thread con il thread principale e mantenerli allineati?