【发布时间】:2009-08-08 09:05:06
【问题描述】:
有没有办法取消长时间运行的文件打开操作?由于防病毒扫描、映射的网络驱动器等造成的长时间延迟。
new FileInputStream("a_file_that_the_antivirus_" +
"will_process_for_minutes_before_returning.jar")
// process the contents...
在上面的例子中,第一行可以阻塞,但是我不知道有什么方法可以异步取消那个操作(如果我们得到了新的 inputstream 对象,取消就像 in.close() 一样简单,但是这个问题不是关于那种情况)。
是否有可能中断打开的进程 - 可能使用 NIO - 或者是否已经有一种机制,例如简单的 Thread.interrupt() 来取消打开?
操作系统:主要是 Windows XP+、Java 6+,阻塞通常是由于一些更大更深的 jar 文件 - 例如,Eclipse 的插件或我自己的复杂应用程序。
【问题讨论】: