如果我有这样的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); } }
并在调试中运行它,我可以看到所有这些线程(在取消之后)仍在运行,所以它们也占用了我的内存吗?如果是的话,我怎么能完全销毁那些线程?
cancel(true)调用interrupt()您的线程,仅此而已。因此,您需要在您的run()方法中正确处理它。对于您的简单情况,您的线程将完成其执行,并且它们的对象将由GC清除。
cancel(true)
interrupt()
run()