是每JVM的Java WatchService还是应用程序可以启动多个


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可以与创建一样数量 - 所有这些都有参考全局文件系统。

相关内容

  • 没有找到相关文章

最新更新