Thread + Socket

Estou fazendo um programa para conexão em rede via socket, e para não bloquear o programa (incluindo a janela principal) ao fazer o “accept()”, executei o comando em uma thread separada.
Meu objetivo é que se consiga clicar em um botão para cancelar a espera pela conexão (abertura de porta no modo passivo). Então, estou utilizando o método “stop()” da thread, mas segundo a documentação, este método não é mais recomendado.
Aparentemente, o método opera corretamente, porém, ao tentar reiniciar a thread (novo objeto), não consigo utilizar a mesma porta. Já tentei até dar um “close()” no socket (segundo a documentação, isto deveria parar a thread que está bloqueada no “accept()”), porém continuo tendo o mesmo problema.
Alguém teria uma sugestão? Um outro método para matar a thread, ou algum modo de desbloquear o método “accept()”?