带超时的Java I/O

带超时的Java I/O,java,java-io,Java,Java Io,这是否可以为java I/O操作指定任何类型的超时 我们的NFS文件系统冻结,然后调用FileOutputStream.write()也冻结。打开超时后,我们可能会检测到这种情况并执行一些操作 =============== 我想到的一个解决方案是对线程池运行某种检查,然后等待超时的结果。但是我不确定这个可调用函数会发生什么,它可能会挂起并且不会释放文件描述符等等 taskExecutor.submit(new FilesystemCheck(filepath)).get(timeout, Ti

这是否可以为java I/O操作指定任何类型的超时

我们的NFS文件系统冻结,然后调用FileOutputStream.write()也冻结。打开超时后,我们可能会检测到这种情况并执行一些操作

===============

我想到的一个解决方案是对线程池运行某种检查,然后等待超时的结果。但是我不确定这个可调用函数会发生什么,它可能会挂起并且不会释放文件描述符等等

taskExecutor.submit(new FilesystemCheck(filepath)).get(timeout, TimeUnit.SECONDS);
用电话

public static class FilesystemCheck implements Callable<Boolean> {

        private final String path;

        public FilesystemCheck(String path) {
            this.path = path;
        }

        @Override
        public Boolean call() throws Exception {

            return Files.exists(Paths.get(path));

        }
    }
公共静态类FilesystemCheck实现可调用{
私有最终字符串路径;
公共文件系统检查(字符串路径){
this.path=path;
}
@凌驾
公共布尔调用()引发异常{
返回文件.exists(path.get(path));
}
}

NFS timemouts的可能重复是一个可以追溯到30年前的问题。我经过深思熟虑后认为,应用程序不应该以任何方式使用共享文件系统。NFS timemouts的可能重复是一个可以追溯到30年前的问题。我经过深思熟虑后认为,应用程序不应该以任何方式使用共享文件系统。