Сколько делают ресурсы спящие и ожидающие потоки используют

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

19
задан Raedwald 15 June 2013 в 10:50
поделиться

4 ответа

Для большинства случаев ресурсы, использованные потоком сна, будут его стековым пространством. Используя 2-threads-per-connection-model, который я думаю, подобно тому, что Вы описываете, как известно, вызывает большие проблемы масштабируемости по этой самой причине, когда количество соединений становится большим.

я был в этой ситуации сам, и когда количество соединений выросло выше 500 соединений (приблизительно тысяча потоков), Вы склонны входить в большое количество случаев, где Вы получаете OutOfMemoryError, так как использование стекового пространства потоков превышает максимальный объем памяти для единственного процесса. По крайней мере, в нашем случае, который был в Java на мире Windows на 32 бита. Можно настроить вещи и добраться немного далее, я предполагаю, но в конце это просто не очень масштабируемо, так как Вы тратите впустую большую память.

при необходимости в большом количестве соединений NIO Java (новый IO или безотносительно) является способом пойти, позволяя обработать много соединений в том же потоке.

Однако Вы не должны встречаться с большой частью проблемы с под 100 потоки на довольно современном сервере, даже если это - вероятно, все еще трата ресурсов.

15
ответ дан 30 November 2019 в 04:54
поделиться

У нас была почти такая же проблема, прежде чем мы переключились на NIO, таким образом, я буду вторая рекомендация Liedmans пойти с той платформой. Необходимо смочь найти учебное руководство, но если Вы хотите детали, я могу рекомендовать Java NIO Ron Hitchens.

Swithcing к NIO увеличил число соединений, мы могли обработать много, которое было действительно очень важно для нас.

2
ответ дан 30 November 2019 в 04:54
поделиться

Это не масштабируется очень хорошо. Наличие большого количества потоков означает, что VM должен потратить контекстное переключение большего количества времени, и память useage произойдет выше из-за каждого потока, требующего его собственного стекового пространства. Вы были бы более обеспечены с меньшим числом обработки потоков конвейерным способом или использовали бы пул потоков с asychronous методами.

1
ответ дан 30 November 2019 в 04:54
поделиться

Много потоков приравнивается к большому стековому пространству, которое поест, Ваша память - проверяют Ваши-Xss настройки для сколько, затем сделайте математику.

И если когда-нибудь необходимо делать notifyAll () по некоторым причинам, затем конечно, Вы будите загрузки дополнительных потоков - хотя Вы, возможно, не должны делать это в своей предлагаемой архитектуре.

я не уверен, что можно легко постараться не иметь один поток на сокет слушания в этой модели (хотя я знаю очень мало о NIO - который мог бы зафиксировать даже, что проблема), но смотрят на java.util.concurrent. Интерфейс Executor и его классы с реализацией для достойного способа постараться не иметь слишком много дополнительных бродящих вокруг потоков. Действительно, эти ThreadPoolExecutor мог бы быть хороший способ управлять Вашими слушающими потоками также, таким образом, Вы не проводите слишком много времени, создавая и уничтожая потоки излишне.

1
ответ дан 30 November 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: