То, что вы хотели бы иметь, это поток, в котором вы выполняете код чтения команд. Вероятно, это будет выглядеть примерно так:
class ReadCommand implements Runnable
{
public void run()
{
// Command reading logic goes here
}
}
В вашем "основном" потоке, где выполняется остальная часть кода, вы должны будете запустить его так:
new Thread(new ReadCommand())).start()
Кроме того, вам нужна где-то очередь команд, которая заполняется из ReadCommand и считывается из другого кода.
Я рекомендую вам прочитать руководство по параллельному Java-программированию.