Поддерживает ли Java RAII / детерминированное уничтожение?

Вы пропустили вставить Double Quotes. Точный запрос -

db.theColl.find( { "_id": ObjectId("4ecbe7f9e8c1c9092c000027") } )
38
задан Community 23 May 2017 в 12:09
поделиться

4 ответа

РЕДАКТИРОВАНИЕ: ответ ниже был записан в начале 2009, когда Java 7 был очень все еще в движении.

, В то время как Java все еще не обеспечивает гарантии вокруг синхронизации завершения, он сделал , получают функцию как C# using оператор: оператор .

попытки с ресурсами <час>

нет, Java не изменился вообще в этом отношении. Все еще необходимо использовать попытку/наконец.

было обсуждение добавления эквивалента оператора "использования" C# (который является синтаксическим сахаром по попытке/наконец) к Java, но я не думаю, что это будет частью Java 7 больше. (Большинство улучшений языка, кажется, было отброшено.)

стоит понять, что существуют причины, почему детерминированное разрушение не было реализовано в Java и.NET в форме считаемого на ссылку сборщика "мусора", между прочим - который a) влияет на производительность и b) перестало работать с циклическими ссылками. Brian Harry написал подробное электронное письмо об этом - это о.NET, и это довольно старо, но это определенно стоит близкого чтения.

27
ответ дан Jon Skeet 23 May 2017 в 22:09
поделиться
  • 1
    Я должен реализовать как приложение Skout. Представление может быть перемещением в обеих сторонах, левых и правых жестом и на нажатии кнопки. Можно ли предоставить мне демонстрацию. – Naresh Sharma 2 November 2012 в 09:32

Существует шаблон, который помогает здесь. Это не столь хорошо, как деструктор основывал RAII, но это действительно означает, что очистка ресурса может быть перемещена в библиотеку (таким образом, Вы не можете забыть называть его).

Это звонило , Выполняются Вокруг, и был обсужден здесь прежде .

Интересно я вижу Jon Skeet, в которого вмешиваются на том потоке, но он не упоминал это здесь - позор Вам, Jon - упустил возможность для некоторых точек представителя там!

BTW, в то время как я - довольный Brian Harry (см. комментарий Jon, снова) перешел к продолжительностям писания электронного письма, которое он сделал - и это, очевидно, отражало длительное размышление, которое вошло в процесс - и я рад, что мы действительно получали "использование" из него в C# - я не соглашаюсь со всеми его заключениями. В частности, я не вижу, почему, если у нас может быть использование, у нас не может быть способа отметить тип как поведение тот путь без "использования". Конечно, это ограничивает использование - но так делает "использование" - и большую часть времени это точно, что Вы хотите. Проблема "использовать" состоит в том, что клиентский код все еще должен не забыть использовать его. С RAII стиля C++ это - свойство типа. Возможно большая проблема с "использованием", или более точно с Расположить идиомой, состоит в том, что это намного более сложно и подвержено ошибкам, чем большинство людей понимает для разбираний - главным образом из-за потенциала для объектов, которые будут возвращены от мертвых.

9
ответ дан Community 23 May 2017 в 22:09
поделиться
  • 1
    I' ll создают демонстрацию и возвращаются к Вам. – Abhishek Nandi 2 November 2012 в 20:36

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

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

0
ответ дан Peter Lawrey 23 May 2017 в 22:09
поделиться

Нет. Нет никакого средства для выделения Объектов на стеке. Каждый Объект выделяется на "куче" и может пережить любой блок, в котором это было инициализировано. Или это может быть собранная середина блока, в зависимости от капризов всего могущественного Сборщика "мусора".

, Если Вы работаете над сервером, Вы могли бы хотеть проверить Java EE. Это не имеет никакого отношения к RAII, но это действительно имеет достойную систему для управления жизненными циклами дорогих объектов как соединения с БД. Java EE 5 на самом деле довольно хорош работать с для большого количества пространств задач.

2
ответ дан Burkhard 23 May 2017 в 22:09
поделиться
  • 1
    @Naresh: сообщите мне, испытываете ли Вы затруднения из-за этого. – Abhishek Nandi 2 November 2012 в 11:58
Другие вопросы по тегам:

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