Вопрос по multithreading, runnable, java – Остановка потока в Java

2

если у меня есть такой код 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);
    }
}

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

Если они больше не будут использоваться, почему бы и нет? :) user1656546
Вы уверены, что хотите уничтожить их? Roman C

Ваш Ответ

1   ответ
1

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

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

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