我正在使用 Java 7 WatchService 来监视目录。我不断地改变我正在观看的目录。我遇到了异常:
java.io.IOException:已达到网络 BIOS 命令限制。
50 个目录之后。我确信在创建新的 WatchService 之前,我会在创建的每个 WatchService 上调用 close() 。
有谁知道释放 WatchService 的正确方法,这样您就不会遇到此限制?
Thanks,
Dave
我觉得all你需要做的是close()
服务。我知道你说过你认为你已经这样做了,但我怀疑你错过了一些。例如,在出现异常的情况下,您可能无法关闭服务实例。您应该将 WatchService 实例视为其他 IO 资源,并在 finally 块中将其关闭;例如
WatchService ws = ...
try {
// use it ...
} finally {
ws.close();
}
或使用 Java 7“尝试资源”语法。
try (WatchService ws = ...) {
// use it ...
}
当。。。的时候WatchService
关闭后,它应该立即释放它所拥有的任何操作系统级资源。
唯一的另一种可能性是您在WatchService
执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)