Остановка потока в Java

если у меня есть такой код Java:

public static void main(String[] args)
{
    for(int i = 0;i<100;i++)
    {
        Future<?> f = ThreadPoolManager.getInstance().schedule(new START(), 500);
        f.cancel(true);
    }
}
private class START implements Runnable
{
    @Override
    public void run()
    {
        System.out.println(1);
    }
}

И запустить его в отладке, я вижу, что все эти потоки (после отмены) все еще работают, так что они также забирают мою память? И если да, как я могу полностью уничтожить эти темы?

 user165654608 сент. 2012 г., 12:50
Если они больше не будут использоваться, почему бы и нет? :)
 Roman C08 сент. 2012 г., 12:49
Вы уверены, что хотите уничтожить их?

Ответы на вопрос(1)

Решение Вопроса

cancel(true) звонкиinterrupt() в вашей теме, не более того. Таким образом, вы должны обращаться с этим должным образом в вашемrun() метод. В вашем простом случае ваши потоки завершат свое выполнение, а их объекты будут очищены GC.

 user165654608 сент. 2012 г., 13:19
но даже если я не отменю (верные) эти потоки и не дам им напечатать "1", в отладке они все равно будут запущены.
 08 сент. 2012 г., 13:29
Спецификация говорит, что поток возвращается после запуска, поэтому вы не должны знать об этом. Вероятно, только для режима отладки вашей IDE они ожидают остановки корневого потока.
 user165654608 сент. 2012 г., 13:41
ага, так это круто, я боялся, что через некоторое время у меня уйдет вся память, если я буду постоянно добавлять темы. Большое спасибо :)

Ваш ответ на вопрос