关闭执行器服务java
如果在未断开urlconnection或关闭bufferedreader的情况下关闭启动urlconnection的executor服务或bufferedreader,会发生什么情况?内存丢失,并且会降低cpu速度吗?关闭executor不会终止已经繁忙的线程。这些将运行到完成(或使用中断有序关闭)。因此,所有资源都将被正确地清理(除非您错过了某个地方的finally块)。您有责任使您的可运行程序正确处理InterruptedException(和其他异常)。关闭执行程序不会终止已经繁忙的线程。这些将运行到完成(或使用中断有序关闭)。因此,所有资源都将被正确地清理(除非您错过了某个地方的finally块)。您有责任让您的Runnable正确处理InterruptedException(和其他异常)。每个关闭执行器服务java,java,executorservice,Java,Executorservice,如果在未断开urlconnection或关闭bufferedreader的情况下关闭启动urlconnection的executor服务或bufferedreader,会发生什么情况?内存丢失,并且会降低cpu速度吗?关闭executor不会终止已经繁忙的线程。这些将运行到完成(或使用中断有序关闭)。因此,所有资源都将被正确地清理(除非您错过了某个地方的finally块)。您有责任使您的可运行程序正确处理InterruptedException(和其他异常)。关闭执行程序不会终止已经繁忙的线程。
URLConnection
类都带有预定义的超时。可以使用指定超时
connection.setReadTimeout(2000);
connection.setConnectTimeout(2000);
由于Javadoc本身不提供保证,所以不能保证这会起作用
此方法的某些非标准实现会忽略指定的超时。要查看读取超时设置,请调用getReadTimeout()
因此,在这种情况下,除非您指定适当的超时,否则中断将不起作用。
提供了一种通过中断线程立即关闭的方法,但由于这些线程不能被中断,因此它没有提供额外的好处
只有当线程定义了其中断策略并执行可中断操作时,它才提供好处。每个
URLConnection
类都带有预定义的超时。可以使用指定超时
connection.setReadTimeout(2000);
connection.setConnectTimeout(2000);
由于Javadoc本身不提供保证,所以不能保证这会起作用
此方法的某些非标准实现会忽略指定的超时。要查看读取超时设置,请调用getReadTimeout()
因此,在这种情况下,除非您指定适当的超时,否则中断将不起作用。
提供了一种通过中断线程立即关闭的方法,但由于这些线程不能被中断,因此它没有提供额外的好处
只有当线程定义了中断策略并执行可中断操作时,它才提供好处。旁注:
关机
不会尝试中断;您可以使用shutdownow
,它将显示。此外,请查看通过java.util.concurrent
提供的一些实用程序,以获得与任务通信的更细粒度控制。还有一个awaitTermination
方法,该方法将阻塞,直到所有线程终止。它还允许您设置超时间隔。旁注:shutdown
不会尝试中断;您可以使用shutdownow
,它将显示。此外,请查看通过java.util.concurrent
提供的一些实用程序,以获得与任务通信的更细粒度控制。还有一个awaitTermination
方法,该方法将阻塞,直到所有线程终止。它还允许您设置超时间隔。