Java 如何在不终止执行此操作的线程的情况下取消文件上载/下载操作?

Java 如何在不终止执行此操作的线程的情况下取消文件上载/下载操作?,java,multithreading,download,apache-commons,thread-abort,Java,Multithreading,Download,Apache Commons,Thread Abort,我的代码调用从internet下载文件的API方法。由于下载可能需要花费大量时间,因此我希望用户能够在后台线程处理文件下载时关闭显示进度条的窗口,从而取消下载 我不确定我对API方法调用的代码是否有任何控制权,因此我假设我没有选项向代码发出需要取消下载操作的信号 如果这个假设是正确的,我如何在用户请求时终止文件下载操作而不必中止/中断或以其他方式终止执行实际文件下载的后台线程?我希望一个设计合理的文件下载方法是可中断的。因此,您需要中断正在进行下载的线程,该线程应取消下载(该方法应抛出Inter

我的代码调用从internet下载文件的API方法。由于下载可能需要花费大量时间,因此我希望用户能够在后台线程处理文件下载时关闭显示进度条的窗口,从而取消下载

我不确定我对API方法调用的代码是否有任何控制权,因此我假设我没有选项向代码发出需要取消下载操作的信号


如果这个假设是正确的,我如何在用户请求时终止文件下载操作而不必中止/中断或以其他方式终止执行实际文件下载的后台线程?

我希望一个设计合理的文件下载方法是可中断的。因此,您需要中断正在进行下载的线程,该线程应取消下载(该方法应抛出InterruptedException)


一旦您从下载线程捕获到异常,您就可以决定要做什么,例如等待提交新的文件下载(即不退出)。

我希望设计正确的文件下载方法是可中断的。因此,您需要中断正在进行下载的线程,该线程应取消下载(该方法应抛出InterruptedException)


一旦从下载线程捕获到异常,您就可以决定要做什么,例如等待提交新的文件下载(即不退出)。

我是否正确地假设apache commons文件下载方法是可中断的?@JSmith他们是否抛出InterruptedException?如果他们这样做了,那么你可以放心地假设他们是。而且测试起来也相当容易。如果他们没有,可能有一个解决方法(例如关闭另一个线程的连接)。我假设apache commons文件下载方法是可中断的,对吗?@JSmith他们会抛出InterruptedException吗?如果他们这样做了,那么你可以放心地假设他们是。而且测试起来也相当容易。如果没有,可能有解决方法(例如关闭另一个线程的连接)。如果您可以访问套接字,只需关闭它,它就会向线程抛出异常,否则我建议您通过一个进程运行它,该进程包含两个线程(取消侦听器和下载文件),文件下载文件是守护进程,对于任何cancel方法,只需向cancel线程发送信号,然后cancel线程就完成了它的工作,这会导致文件下载被静默地终止,比如如果您有权访问套接字,只需关闭它,它就会向线程抛出异常,否则我建议您通过一个包含两个线程(cancel listener和download file)的进程运行它,文件下载文件是守护进程,对于任何cancel方法,只需向cancel线程发送信号,然后cancel线程就完成了它的工作,导致文件下载被静默地终止,比如