博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WatchService实现配置文件变更监听
阅读量:6262 次
发布时间:2019-06-22

本文共 2275 字,大约阅读时间需要 7 分钟。

/** * WatchService实现配置文件变更监听 *  */public class WatchProperties {        private static WatchService watchService;    private static String filename;    private static Properties properties;    private static ClassPathResource resource;    static {                try {            //读取的配置文件,在资源文件夹下就行            filename = "sysconst.properties";            resource = new ClassPathResource(filename);            //监听filename所在目录下的文件修改、删除事件            watchService = FileSystems.getDefault().newWatchService();            Paths.get(resource.getFile().getParent()).register(watchService,                    StandardWatchEventKinds.ENTRY_MODIFY, StandardWatchEventKinds.ENTRY_DELETE);            properties = PropertiesLoaderUtils.loadProperties(resource);        } catch(IOException e) {            e.printStackTrace();        }                //启动一个线程监听内容变化,并重新载入配置        Thread watchThread = new Thread() {            public void run() {                while(true) {                    try {                        WatchKey watchKey = watchService.take();                        for (WatchEvent event : watchKey.pollEvents()) {                            if (Objects.equals(event.context().toString(), filename)){                                properties = PropertiesLoaderUtils.loadProperties (resource);                                break;                            }                             watchKey.reset();                        }                    } catch (Exception e) {                                            }                }            };        };                        //设置成守护进程            watchThread.setDaemon(true);        watchThread.start();                //当服务器进程关闭时把监听线程close掉        Runtime.getRuntime().addShutdownHook(new Thread() {                        @Override            public void run() {                try{                    watchService.close();                } catch(IOException e) {                    e.printStackTrace();                }            }        });                                    }        public static String get(String key){        return properties.getProperty(key, "");    }        public static void main(String[] args) {        System.out.println(">>>>>>>>>>>>>>" + get("OSS_OUT_OF_DATE"));    }}

转载地址:http://qshsa.baihongyu.com/

你可能感兴趣的文章
1412. [ZJOI2009]狼和羊的故事【最小割】
查看>>
ABP官方文档翻译 5.4 SwaggerUI集成
查看>>
404. Sum of Left Leaves(统计左叶子节点的和)
查看>>
深入研究线程池(转载)
查看>>
技巧(二)
查看>>
杭电1029--Ignatius and the Princess IV(哈希)
查看>>
Cesium中级教程3 - Camera - 相机(摄像机)
查看>>
redis面试题
查看>>
windows主机mysql忘记密码如何重置
查看>>
Learn Python 010: Dictionary - Cinema Simulator
查看>>
转载——c++中冒号(:)和双冒号(::)的用法
查看>>
使用CSS3改变文本选中的默认颜色
查看>>
【leetcode】560. Subarray Sum Equals K
查看>>
使printf打印信息带有颜色
查看>>
Linux中磁盘分区——理论篇
查看>>
看博客学学Android(七)
查看>>
19.05.02--存储二进制数据
查看>>
linux输出与查看的几种方式
查看>>
HDU - 3516 Tree Construction
查看>>
Bind安装配置及应用
查看>>