`
cucaracha
  • 浏览: 141395 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:87893
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:36699
社区版块
存档分类
最新评论

[NIO.2] 第三十八篇 监控服务 API

阅读更多
Java 7 NIO.2 引入了线程安全的监控服务,用于监控对象的改变和事件。大多数时候,用于监控目录和文件内容的改变,例如对目录中的文件进行增删改的操作。你可能已经见过这样的情况。当你在使用文本编辑器编辑文件的时候,如果你在文本编辑器的外部改变了文件的内容,那么文本编辑器会察觉到这个改变,并及时通知你。这就是系统的文件改变通知机制。NIO.2 开始提供了监控服务 API 来支持这个功能。

监控服务 API 是底层的 API。可以直接被使用也可以进行自定义。你甚至可基于它编写更高级的 API。默认情况下,此 API 依赖底层系统提供的功能来监控文件的改变。它允许你注册一个或多个文件夹被监控,在被监控周期内,可接受不同类型的通知。当一个或多个通知事件被监控服务接收,它会将事件传递给单独的线程或线程池来处理。

从 NIO.2 开始,你不再需要通过轮循或其它内部的方式来监控文件改变。在之前的 Java 版本中,需要启动一个专门的线程来不断循环监控文件的改变。现在,不再需要这么做了,无论是运行在  Mac OS X、Linux、Unix、Windows 或其它操作系统,都可以依赖系统底层通知来监控文件改变。
监控服务 API

首先我们看看 API 中的 java.nio.file.WatchService 接口。针对不同的文件系统和操作系统,这个接口有不同的实现。这个接口和一些类结合使用可以实现文件系统监控能力,下面看看简述:

  •     可监控对象:可监控对象是指实现了  java.nio.file.Watchable 接口的类的实例。在 NIO.2 中最常见的可监控对象就是 Path 对象。
  •     事件类型:这是我们监控的事件列表。事件只有在被注册后才会触发通知。NIO.2 支持的标准事件在  java.nio.file.StandardWatchEventKinds 类中,其中包含了创建、删除和修改事件。这个类中的常量实现了 WatchEvent.Kind<T> 接口。
  •     事件修饰符:它限制了 Watchable 如何注册 WatchService。
  •     事件监视器:监视器是 WatchService 对象,用于监控文件系统的改变。WatchService 对象可通过 FileSystem 对象来创建。它总是在后台监控注册的 Path 对象。


文章来源:http://www.aptusource.org/2014/04/nio-2-watch-service-api/
0
0
分享到:
评论

相关推荐

    apache-tomcat-8.0.38.zip

    3. **NIO.2和 APR**:Tomcat 8.0.38 提供了对Java NIO.2 API的支持,以及与Apache Portable Runtime (APR)库的集成。这可以显著提高连接处理能力和性能,尤其是在高并发环境下。 4. **安全性增强**:包括更新的安全...

    史上最全40道Dubbo面试题!.zip

    可以通过编写校验逻辑或使用第三方校验库,如Hibernate Validator,对调用参数进行验证。 16. **Dubbo如何实现服务的灰度发布?** 通过服务分组、权重分配等方式实现灰度发布,逐步将新版本推送给部分消费者。 ...

    Dubbo面试题(2022最新版)

    监控中心通常是一个独立的应用,可以是Web界面或者API服务,便于实时查看和分析服务状态。 #### 三、分布式框架 1. **Dubbo类似的分布式框架还有哪些?** - **Spring Cloud**:基于Spring Boot的微服务解决方案...

    jdk6 win7 64位

    - **NIO.2**:改进了非阻塞I/O,增加了文件系统相关的API,如文件路径操作、文件属性访问等。 - **Scripting API**:允许在Java程序中嵌入和执行脚本语言。 3. **JDK 6的开发工具**: - **javac**:Java编译器...

    Jetty权威指南.pdf

    - **社区支持**:两者都拥有活跃的社区支持,但Tomcat由于更广泛的使用范围,可能拥有更多的第三方插件和文档资源。 **1.5 本章小结** Jetty是一款优秀的Web服务器和Servlet容器,以其轻量级、高性能和高度可定制...

    java面试八股文.pdf

    - 一种开放标准,用于授权第三方应用访问用户资源。 47. **Docker在Java应用部署中的作用** - 提供了一种容器化的解决方案,便于应用的部署和管理。 48. **在Java中实现高效的日志记录** - 使用Log4j、SLF4J等...

    《Hadoop开发者》第四期

    #### 十三、Hadoop中的tar命令的实现 Hadoop支持通过tar命令打包文件,这在数据备份和迁移中非常有用。 **实现细节**: - **Hadoop Tar**:使用`hadoop archive`命令创建.tar.gz文件。 - **文件系统操作**:通过...

    330 Java Tips(330 JAVA 小技巧)

    - **文件监控**:熟悉如何使用`java.nio.file.WatchService`等API来监控文件系统的变更事件。 ### 四、Distributed systems(分布式系统) - **RMI基础**:理解Java RMI(Remote Method Invocation)的基本概念和...

    java面试笔记整理,包含java,redis,kafka等

    #### 三十八、守护线程 - **守护线程:** 当所有非守护线程结束时,JVM将退出,即使仍有守护线程在运行。 #### 三十九、对象克隆的实现 - **通过实现Cloneable接口和使用Object类的clone方法。** - **深拷贝与浅...

Global site tag (gtag.js) - Google Analytics