Мне интересно, как дорого стоит много потоков в состоянии ожидания в java 1.6 x64.Сколько ресурсов спящих и ожидающих потоков потребляют
Чтобы быть более конкретным, я пишу приложение, которое работает на многих компьютерах и отправляет/принимает данные от одного к другому. Мне удобнее иметь отдельный поток для каждой подключенной машины и задачи, например: 1) отправка данных, 2) получение данных, 3) восстановление соединения при его удалении. Итак, учитывая, что в кластере есть N узлов, каждая машина будет иметь 3 потока для каждого из N-1 соседей. Как правило, будет 12 машин, которые достигают 33 коммуникационных потоков.
Большинство из этих потоков будут спать большую часть времени, поэтому для целей оптимизации я мог бы уменьшить количество потоков и дать больше работы каждому из них. Например, как. восстановление соединения связано с получением потока. Или отправка на все подключенные машины осуществляется одиночной нитью.
Так есть ли значительное влияние на много спальных нитей?
Не следует использовать JRocikt JVM для решения этих проблем - поскольку я читал, он был разработан для обработки тысяч потоков. – 2008-09-19 10:37:28
У меня нет опыта с JRockit JVM, поэтому я действительно не могу прокомментировать это. Сказав это, я знаю, что большинство операционных систем будут плохо работать с тысячами потоков, поэтому я не знаю, как JRockit справляется с этой проблемой ... – Liedman 2008-10-30 08:38:04