shutdown executor service java

时间:2012-09-27 03:10:44

标签: java executorservice

如果关闭启动urlconnection或bufferedreader的执行程序服务,而不断开urlconnection或关闭bufferedreader,会发生什么情况,是否存在内存丢失,是否会降低cpu的速度?

2 个答案:

答案 0 :(得分:3)

关闭Executor不会终止已经忙碌的线程。这些将运行完成(或使用中断有序关闭)。所以所有资源都将被正确清理(除非你错过了某个地方的finally块)。您的责任是让您的runnables正确处理InterruptedException(和其他异常)。

答案 1 :(得分:1)

每个URLConnection类都带有预定义的超时。您可以使用

指定超时
    connection.setReadTimeout(2000);
    connection.setConnectTimeout(2000);

无法保证这将起作用,因为Java doc本身不提供保证。

URLConnection#setConnectTimeout

URLConnection#setReadTimeout

  

此方法的某些非标准实现会忽略指定的超时。要查看读取超时设置,请调用getReadTimeout()。

除非您指定适当的超时时间,否则中断将无效。

ExecutorService#shutdownNow()提供了一种通过中断线程立即关闭的方法,但由于这些线程无法中断,因此不会带来额外的好处。

只有当线程定义了中断策略并执行可中断操作时,它才会提供好处。