Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Работа ScheduledPool после завершения родительског


Автор: novichiok 10.10.2011, 15:16
Здравствуйте. У меня возник такой вот вопрос:в инстансе Runnable у меня есть ссылка на scheduledPool, в run() данного потока я инициализирую этот пул, сабмичу таск и время через которое таск должен выполняться, после чего run() родительского потока сразу завершается, то есть завершается и сам родительский поток и следовательно теряется ссылка на мой пул. Вопрос - будет ли дальше существовать мой пул и содержащийся в нем таск будет выполняться корректно, или его соберет сборщик мусора ? 
Пул никто не юзает. Он просто выполняет таск по прошествии определенного времени и все. PS: код этот не написан, поэтому в дебагере смотреть не могу. Хотел вот узнать прежде чем начинать такое имплиментиить
Спасибо

Автор: LSD 10.10.2011, 15:24
Честно говоря не понял, кто на кого там ссылается, но:
- работающий поток никогда не будет собран сборщиком
- все объекты на которые есть ссылки из работающего потока тоже не будет собраны

Автор: novichiok 10.10.2011, 15:41
Код

public class MyRunnable implements Runnable
{
ScheduledExecutorService pool;
public void run() {
pool = new Executors.newScheduledThreadPool(1);
pool.scheduleWithFixedDelay(new MyTask(),5, 5, TimeUnit.SECONDS);
}
}


Вот такой код.
то есть в определенный момент времени в пуле, работающих потоков может и не оказатся, ведь задача запускается по истечении интервала времени.
В том то и соль ситуации что используется пул и не обычный а scheduled.

Автор: LSD 10.10.2011, 15:58
Цитата(novichiok @  10.10.2011,  16:41 Найти цитируемый пост)
В том то и соль ситуации что используется пул и не обычный а scheduled. 

Это ничего не меняет. Пока у пула не был вызван shutdown() в нем есть работающие потоки, у которых есть ссылка на пул. Значит GC пул не соберет.

Автор: novichiok 10.10.2011, 16:05
Тогда отлично.
Спасибо

Автор: javer 10.10.2011, 17:00
Т.е.  фактически задачи из пула будут выполняться после завершения приложения - т.е. они демоны? ..ну ли КАК демоны)

Автор: novichiok 10.10.2011, 17:17
Цитата(javer @ 10.10.2011,  17:00)
Т.е.  фактически задачи из пула будут выполняться после завершения приложения - т.е. они демоны? ..ну ли КАК демоны)

Почему после завершения ? 
Перед завершением закрою пул и все

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)