| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Stream |
| Автор: maximb 2.12.2005, 17:38 | ||||
| Увидел код где поток закрывается внутри метода в который он передается. Поэтому возник вопрос. Какой из этих примеров правельный ?
Добавлено @ 17:44 Мне кажется что где открыл там и закрыл. Это правильно. |
| Автор: batigoal 2.12.2005, 19:24 |
| Конечно, лучше выполнять парные операции на одном уровне. В противном случае программист, который будет использовать твой код, не догадается, что поток закрывается где-то в другом месте, и нарвется на ошибку. |
| Автор: Alexandr87 3.12.2005, 16:35 |
| Я гдет прочитал, что закрывать потоки вообще не нужно, за редким исключением, поток - этоже класс и собственно сборщик его сам пригребет, перед этим закрыв. |
| Автор: LSD 3.12.2005, 18:02 | ||
Если это была книжка то выброси ее, если сайт никогда туда больше не ходи. Освобождение внешнего ресурса из метода finalize() это так сказать запасной вариант на случай нерадивого разработчика, но не норма. Если до завершения приложения объект не будет собран сборщиком, то метод finalize() не будет вызван (при выходе он не вызывается). Не закрывая ресурс вовремя ты вызываешь их перерасход, если например при работе с СУБД не закрывать ResultSet, то можно очень быстро нарваться на too many open cursors exception. Открытый файл нельзя удалить, пока он не будет закрыт. После закрытия сокета, еще минут 10 нельзя использовать тот же порт что он занимал. |
| Автор: Alexandr87 3.12.2005, 18:07 |
| Приму к сведению |
| Автор: batigoal 3.12.2005, 22:57 | ||
А почему? Это задержка вызвана свойствами Java-реализации, или особенностми ОСей? |
| Автор: LSD 3.12.2005, 23:25 | ||
Особенности протокола, http://forum.vingrad.ru/index.php?showtopic=62746 это обсуждается более подробно. |