Есть подозрение на участок кода, т.е. каждый раз, когда нужно вызвать метод класса SocketThread, по сути каждый раз создается новый объект.
protected SocketThread getSocketThread() {
        return new SocketThread();
    }
Что не так? Где порылась эта, с большими зубами?