![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Illdisposed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.3.2012 Репутация: нет Всего: нет |
Здравствуйте!
Изучаю Java, но до конца не могу понять работу с потоками. Вот например код из библиотеки:
Я не понимаю тут все нормально с потоками, ничего не надо закрывать? Честно сказать подобный код довольно часто встречается. Прошу прощения за такой вопрос, буду рад если ответите. Это сообщение отредактировал(а) Illdisposed - 15.9.2012, 13:06 |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Если метод предполагает однократное использование, то логично, если метод сам освободит все ресурсы по завершению. Создали райтер, записали один раз, райтер выбросили.
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
||||
|
||||
| Illdisposed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.3.2012 Репутация: нет Всего: нет |
А то, что ByteArrayOutputStream data не закрывается в конце, это нормально? И поток, который создает вызов ImageIO.createImageOutputStream(data) не закрывается, тоже нормально?
|
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Наверное, нормально.
Closing a ByteArrayOutputStream has no effect. -> http://docs.oracle.com/javase/1.4.2/docs/a...am.html#close() |
|||
|
||||
| Illdisposed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.3.2012 Репутация: нет Всего: нет |
COVD,
Как я понимаю можно не закрывать и ImageOutputStream который создается с помощью ImageIO.createImageOutputStream? В документации ничего не написано по этому поводу. |
|||
|
||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
ImageIO использует более сложный механизм для менеджмента потоков ввода/вывода. При создании с ними ассоциируются коллбэки, закрывающие потоки. То есть ImageOutputStream и ImageInputStream можно закрывать, а можно и нет - тогда классы imageio сделают это за вас как минимум при завершении работы JVM. См также StreamCloser -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| Illdisposed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.3.2012 Репутация: нет Всего: нет |
jk1,
Большое спасибо за объяснения! |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |