Я работаю над приложением, которое взаимодействует с сотнями устройств по сети. Тип выполняемой работы требует большого количества параллельных потоков (в основном потому, что для каждого из них требуется взаимодействие с сетью и делается это отдельно, но по другим причинам). На данный момент мы находимся в области, где требуется около 20-30 потоков на каждое устройство, с которым взаимодействует.WorkManager и высокая рабочая нагрузка
Простой расчет ставит это на тысячи потоков, даже до 10000 потоков. Если мы отложим штраф за процессор для переключения потоков и т. Д., Сколько потоков может работать на Java 5 на 64-разрядной ручке CentOS? Это просто вопрос ОЗУ или есть что-то еще, что мы должны рассмотреть?
Спасибо!
Вы полностью ошибаетесь, если считаете, что * «огромное количество сетевых операций ввода-вывода» * [sic] подразумевает огромное количество потоков, требуемых одновременно, как вы прокомментировали YoK. Там много систем, производящих и потребляющих гигантское количество сетевых операций ввода-вывода без использования тысяч потоков. – NoozNooz42
@ NoozNooz42 10k соединений - это огромное количество и, конечно, нетривиальные потоки или нет, даже если это было сделано раньше. – nos
@ NoozNooz42 За исключением NIO (который я прокомментировал ниже, для нас не представляется возможным), и учитывая, что IO сети (и обработка на удаленных серверах) занимает много времени, как бы вы достигли лучшей производительности? – Yon