Использует ли while(true)
цикл Java вместе с wait(1)
больше или меньше ресурсов, чем цикл блокировки с wait()
и notify()
?
И есть ли у ядер ЦП какие-то специальные (аппаратные) реализации, позволяющие wait(1)
? Если да, то есть ли ограничения при работе с такими неблокирующими петлями?
Пример:
while(true){
wait(1);
//do the job here...
}
(Просто примечание: без wait(1)
ядро стало бы радикальным на 100% в while(true)
цикле ...)
wait(1)
действительно подождите одну миллисекунду. Миллисекунда - это очень долгий промежуток времени с точки зрения тактовой частоты процесса ЦП, поэтому ЦП обычно отдыхает на целую миллисекунду каждые ... сколько бы времени ни потребовалось для обработкиwhile(true)
. - person ryvantage   schedule 07.02.2014wait
(или лучшеThread.yield()
). Ваш код является гостем, который может предоставлять подсказки системе, но он может остановить ваш поток, сохранить его контекст и продолжить позже в любой момент. - person zapl   schedule 07.02.2014wait(1)
может использовать даже больше времени, чем простоwait()
иnotify()
? Окей, ты меня понял, теперь мне действительно нужно это проверить. ;) - person Marcus   schedule 07.02.2014