Что может быть лучше: держать файлInputStream открытым в течение длительного времени или часто открывать и закрывать его? - PullRequest
5 голосов
/ 22 февраля 2011

Я написал небольшое приложение на Java, которое записывает несколько строк в текстовый файл каждые десять секунд или около того. Лучше ли инициализировать входной поток вне цикла и держать его открытым в течение очень долгого времени, или открывать и закрывать его каждый раз, когда мне нужно его использовать?

Я не думаю, что это действительно имеет значение в этом примере, поскольку это такой медленный цикл, но я хотел бы знать только для будущей референции. Как насчет идентичного сценария, но относящегося к соединению JDBC? ..

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 22 февраля 2011

Для файлового потока, я думаю, я бы оставил поток открытым.Если вы всегда открываете и закрываете его, всегда существует вероятность, что открытие может завершиться неудачно, потому что кто-то открыл / заблокировал файл в редакторе с момента вашей последней записи в него.(Кроме того, системные вызовы для открытия и закрытия файла не приходят бесплатно ...)

Для случая JDBC вы не должны делать ни того, ни другого.Скорее вы должны использовать пул соединений JDBC, и пусть , что позаботится об открытии / закрытии соединения.(Одна из проблем, связанных с длительным зависанием соединения с базой данных, заключается в том, что база данных может его закрыть. В зависимости от вашего драйвера JDBC это может вызвать проблемы при попытке использовать закрытое соединение.)

1 голос
/ 22 февраля 2011

Так как в вашем случае это происходит очень редко, раз в 10 секунд.поэтому я хотел бы порекомендовать реализацию без сохранения состояния, то есть открыть файл, выполнить свои операции, а затем закрыть его после завершения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...