Может быть, "условие гонки", поэтому stdin не определяется, когда вы достигаете первого вызова setcommand ().
Вы вызываете setcommand из main (), но стандартный ввод еще не установлен.
Обновление
Теперь вы спрашиваете, как это сделать. Есть много способов заставить это работать. Здесь только одно предложение:
Пусть setcommand () устанавливает член команды и ничего более. В методе run () поместите цикл while. в цикле while подождите, пока команда не будет установлена, отправьте команду в поток и сбросьте команду на ноль. Необязательный sleep () несколько мс, затем продолжите цикл. НТН.