FileSystems.getDefault().newWatchService();
这会创建新的手表服务还是只给出单身对象?
它说:
@return新手表服务
我读过的一些帖子让我认为可能只有1个,因此,如果您执行.take()
或.poll()
,则可能会获得另一个线程WatchKey事件。我以为也许我需要使用一个,但是现在我不确定,因为我确实有2个左右的运行,而且它们似乎有效,但我尚未明确测试。
有人知道您是否可以在一个应用中使用多个手表服务?
通过源代码进行此处,似乎每次称为它都会返回新的WatchService
class WindowsFileSystem
extends FileSystem
{
..............................
..............................
@Override
public WatchService newWatchService()
throws IOException
{
return new WindowsWatchService(this);
}
}
this
在这里指的是WindowsFilesystem对象(我在Windows JVM上检查此对象(,该对象是静态变量,因此每JVM
public final class FileSystems {
private FileSystems() {
}
.................
.................
public static FileSystem getDefault() {
return DefaultFileSystemHolder.defaultFileSystem;
}
}
因此,我们可以得出结论,文件系统对象是全局的,但是WatchService可以与创建一样数量 - 所有这些都有参考全局文件系统。