Я разработал небольшое Java-приложение, которое запускает два запланированных потока через службу запланированного исполнителя. На большинстве компьютеров мое приложение работает нормально. Однако во время тестирования я столкнулся с компьютером, на котором мои потоки запускаются не так часто, как следовало бы, или нет вообще. У меня один поток запланирован на 250 мс интервалы. Он просто проверяет, есть ли что-то, что можно прочитать на std, если он есть, он читает и выполняет команду. Этот поток запускается время от времени, но не так часто, как следовало бы. Мой другой поток запускается каждые 5 секунд и просто печатает что-то на экране. Он запускается один раз, а потом никогда не запускается снова. Вот код, который я использую:
scheduledThreadManager.scheduleWithFixedDelay(new Runnable()
{
@Override
public void run()
{
try
{
if(inputReader.ready())
{
String command = inputReader.readLine();
executeCommand(command);
}
}
catch(IOException e)
{
System.out.println(e.toString());
e.printStackTrace();
}
}
}, 250, 250, TimeUnit.MILLISECONDS);
scheduledThreadManager.scheduleWithFixedDelay(new Runnable()
{
@Override
public void run()
{
System.out.println(idleString);
}
}, 0, 5000, TimeUnit.MILLISECONDS);
Я убедился, что мое приложение не зависает во время выполнения запланированных потоков. На компьютере установлен процессор Core2Duo, поэтому я не вижу, как аппаратное обеспечение не сможет удовлетворить мои потребности, но, возможно, это не так. Другая интересная вещь заключается в том, что в дополнение к ним я запускаю основной поток приложений, и он работает правильно. Любая информация о причинах этой проблемы будет принята с благодарностью.