У меня есть несколько потоков, каждый из которых имеет свою собственную параллельную очередь, и все, что они делают, это запускают бесконечный цикл, извлекая из него сообщения. Может случиться, что одна из очередей не будет получать сообщения в течение определенного периода времени (возможно, пары секунд), а также они могут приходить большими пакетами, и требуется быстрая обработка.
Я хотел бы знать, что было бы наиболее целесообразно сделать в первом случае: использовать очередь блокировки и блокировать поток до тех пор, пока у меня не будет больше ввода или выполнить Thread.yield ()?
Я хочу, чтобы в определенный момент времени было доступно как можно больше ресурсов ЦП, поскольку число одновременных потоков может со временем увеличиваться, но я также не хочу, чтобы обработка сообщений отставала, так как нет гарантии того, что когда поток будет переназначен для выполнения при выполнении yield (). Я знаю, что оборудование, операционная система и другие факторы играют здесь важную роль, но если оставить это в стороне и взглянуть на это с точки зрения Java (JVM?), Что будет наиболее оптимальным?