2013-02-25 2 views
2

Если поток Java не имеет цикла в методе его запуска, можно ли предположить, что Thread будет уничтожен после завершения метода выполнения. Рассмотрим следующий код,Java Thread, который не имеет цикла в методе запуска

Thread t = new Thread(){ 
    public void run(){ 
     System.out.print("Hello World!"); 
    } 
}; 

t.start(); 

В приведенном выше примере, когда метод запуска заканчивается, как я могу вернуть системные-ресурсы обратно в систему?

+5

Что вы имеете в виду с системными ресурсами? –

+0

Память и процессор. – user1917209

+0

Когда ваша программа выходит из метода 'main()', как вы обеспечиваете возврат системных ресурсов (Память и ЦП)? – Apurv

ответ

7

Можно ли предположить, что нить будет уничтожена после завершения метода .

Да.

Как вернуть системные ресурсы обратно в систему?

Ссылки на объекты (т. Е. Ресурсы памяти) будут собираться мусором. Никаких конкретных действий не требуется.

Файл, ресурсы БД могут быть закрыты в блоке finally после того, как вы закончите использовать их.

finally { 
resource.close(); 
} 

Вы также можете использовать новый try with resources в Java 7

+0

Отличный ответ на вопрос (+1) – asifsid88

1

Все системные ресурсы, связанные с данным объектом, освобождаются сборщиком мусора, как он считает нужным.

Хотя ресурсы действительно будут возвращены, очень важно не полагаться на то, что они будут возвращены сразу или даже в течение ограниченного времени; никогда не полагайтесь на сборщика мусора, делая что-то, когда вы этого хотите. Так было с облачными объектами в C++, но это не так в java.

Некоторые ресурсы могут быть освобождены вручную (обычно это метод obj.close()), например файлы и сокеты.

Смежные вопросы