Tob*_*oby 4 java linux inotify java-8 raspberry-pi
用于java.nio.file.WatchService状态的JavaDoc ;
实现...旨在直接映射到可用的本机文件事件通知工具,或者在本机工具不可用时使用原始机制(例如轮询).
我认为这意味着它会尝试一种轻量级的本机机制(如inotifyLinux上的那样),如果不能,则进行轮询.
那是对的吗?
哪些操作系统可能或不可能提供这样的设施?Linux的发行版级别真的很有用,或者我可以假设如果JVM在*unix上运行,它会受到支持吗?
这应该是一个评论,但它太大了,不能发布它...
我正在查看jdk-9源代码(也可以在jdk-8 repo中轻松搜索),但这里有一些与你的问题评论有关:
/**
* Linux implementation of WatchService based on inotify.
*
* In summary a background thread polls inotify plus a socket used for the wakeup
* mechanism. Requests to add or remove a watch, or close the watch service,
* cause the thread to wakeup and process the request. Events are processed
* by the thread which causes it to signal/queue the corresponding watch keys.
*/
class LinuxWatchService extends AbstractWatchService
Run Code Online (Sandbox Code Playgroud)
对于Windows:
/*
* Win32 implementation of WatchService based on ReadDirectoryChangesW.
*/
class WindowsWatchService extends AbstractWatchService
Run Code Online (Sandbox Code Playgroud)
等等..您可以在以下位置找到所有可用的实现:
jdk/src/java.base/{windows|unix|solaris|linux...}/classes/sun/nio/fs/
Run Code Online (Sandbox Code Playgroud)
正如操作系统实际上支持这一点,似乎需要您查看实际的发行版.
我认为您可以在这篇文章中找到一些信息Watchservice in windows 7 does not work。有一些关于 Windows 和 MacOSX 上的文件系统观察程序的注释(帖子作者说他们正在使用轮询)。在 Linux 上,文件系统监控是 Linux 内核的一部分,它是使用非常好的通知机制来实现的(有关其中一些的更多信息可以在此处找到)
| 归档时间: |
|
| 查看次数: |
402 次 |
| 最近记录: |