`
rainbow686
  • 浏览: 164145 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java守护线程读取配置文件

    博客分类:
  • Java
阅读更多
对于某些应用需要实时读取配置文件,但是读取的频率非常高,比如1秒100次以上,修改配置文件的频率远远低于读取频率。此时如果当程序执行的时候每次都 读取配置文件,那么系统的io可能会有些压力,因此可以做一个守护线程每隔一段时间(例如1分钟)读取一次配置文件,代码直接取最新的配置文件的值来执 行,这样既降低了读取配置文件的频率又获得了较好的实时性。
代码如下:
java 代码
 
  1. import java.io.InputStream;  
  2. import java.util.Properties;  
  3.   
  4. /** 
  5.  * 系统配置文件类 
  6.  * @author sunbin 
  7.  * 
  8.  */  
  9. public class Configation extends Thread {  
  10.       
  11.     //静态属性类  
  12.     private static Properties p;  
  13.       
  14.     /** 
  15.      * 默认构造方法 
  16.      */  
  17.     public Configation(){  
  18.         //  
  19.     }  
  20.       
  21.     /** 
  22.      * 继承Thread必须要实现的方法 
  23.      */  
  24.     public void run(){  
  25.         while(true){  
  26.             //获取classpath中配置文件  
  27.             InputStream in = Configation.class.getClassLoader().getResourceAsStream("config.properties");  
  28.             if (p == null){  
  29.                 p = new Properties();  
  30.             }  
  31.             try{  
  32.                 p.load(in);  
  33.                 Thread.sleep(10000);//休眠10秒后重新读取配置文件  
  34.             }catch(Exception e){  
  35.                 e.printStackTrace();  
  36.             }  
  37.         }  
  38.     }  
  39.       
  40.     /** 
  41.      * 获取配置文件的实例 
  42.      * @return 
  43.      */  
  44.     public Properties getProperties(){  
  45.         return p;  
  46.     }  
  47.       
  48.     /** 
  49.      * 测试主程序 
  50.      * @param args 
  51.      */  
  52.     public static void main(String[] args){  
  53.         Configation c = new Configation();  
  54.         c.setDaemon(true);//设置线程为守护线程  
  55.         c.start();//启动线程  
  56.         try {  
  57.             Thread.sleep(3000);  
  58.         } catch (InterruptedException e) {  
  59.             e.printStackTrace();  
  60.         }  
  61.         //重复打印配置文件的值,当修改配置文件后1秒立即生效  
  62.         while(true){  
  63.             Properties p = c.getProperties();  
  64.             System.out.println(p.getProperty("com.test.a"));  
  65.         }  
  66.           
  67.     }  
  68.   
  69. }  
其中c.setDaemon(true)设置线程为守护线程,关于守护线程可以参考http://www.google.cn/search?complete=1&hl=zh-CN&q=java+%E5%AE%88%E6%8A%A4%E7%BA%BF%E7%A8%8B&meta=&aq=t&oq=java+%E5%AE%88%E6%8A%A4
分享到:
评论
3 楼 shukeguo 2009-12-18  
c.setDaemon(true);//设置线程为守护线程 为什么一定要守护了。难道一般的用户线程不能做到吗 。你是什么思路
2 楼 putonyuer 2009-09-18  
草  误导人 混淆概念
1 楼 GongWenJun 2008-12-11  
你这个程序有点漏洞,InputStream在下次使用之前如果不关闭的话不会重新加载,所以应该在p.load(in);  后面加上in.close();才可以,要不然不会读取修改后的值的,嘿嘿,不过思路不错

相关推荐

    java多线程设计模式详解

    Java的`Thread.setDaemon()`方法可以将线程设置为守护线程。 五、读写锁模式 在多线程环境下,读写锁可以提高并发性能。读写锁允许多个线程同时读取数据,但在写入时则独占资源,防止数据不一致。Java的`...

    Windows下 tomcat的守护进程、心跳程序

    ### Windows 下 Tomcat 的守护进程与心跳检测...例如,可以通过外部配置文件来设置心跳检测的时间间隔、超时时间等参数,以满足不同场景的需求。此外,还可以考虑增加日志记录功能,以便于后续的故障排查和维护工作。

    多线程设计模式.rar

    在计算机科学领域,多线程设计模式是一种优化程序性能、提高资源利用率的重要技术。它允许一个应用程序同时执行多个任务,从而提升...而“xml”文件可能是相关资料的配置文件或索引,用于辅助理解和应用这些设计模式。

    几十个java游戏源代码打包,仅供学习使用。

    7. **文件I/O**:游戏可能需要保存和读取用户进度、配置文件等,因此了解Java的文件I/O操作也是很重要的。 8. **网络编程**:对于多人在线游戏,Java的Socket编程可以用来实现客户端和服务器之间的通信。 9. **...

    java定时检测系统

    9. **文件操作**:对于涉及文件修改的定时任务,需要掌握Java的I/O流和NIO API来读取、写入或删除文件。 10. **并发编程**:在处理多任务同时执行时,需要了解并发编程的概念,如锁、同步、并发容器等,以避免竞态...

    java程序基础教程ppt

    10. **多线程**:阐述并发编程的基础,如线程的创建、同步机制(synchronized关键字、wait()和notify()方法)、线程池和守护线程。 11. **文件和目录操作**:涉及Java的File类,如何创建、删除、重命名文件和目录,...

    JAVA 范例大全 光盘 资源

    实例124 爱子(守护线程) 361 实例125 有始有终(线程连接) 363 实例126 模拟下载文件(线程等待和通报) 365 实例127 家族等级(线程优先级) 368 实例128 定时器(Timer) 371 实例129 没法吃饭(死锁) ...

    java源码:日历同步统计 GCALDaemon.zip

    7. **文件I/O**:保存和读取配置文件,可能用到`java.io`包。 8. **异常处理**:保证程序的健壮性,会看到大量的`try-catch`语句和自定义异常。 通过对GCALDaemon源码的深入学习,开发者不仅可以提升Java编程能力,...

    最热门的Java 面试题汇总

    1. **守护线程(Daemon Thread)**:在Java中,守护线程是一种特殊的线程,它的主要任务是为其他线程提供服务。当所有非守护线程结束时,程序会退出,即使还有守护线程运行。 2. **Thread的中断标志**:线程的中断...

    data-util-0.3.22.zip

    框架可能提供配置文件读取和解析能力,便于设置启动参数。 6. **重启和监控**:对于长期运行的服务,故障恢复和自我监控是必备功能。框架可能包含了检测进程状态并自动重启的机制。 7. **线程模型**:守护程序可能...

    Java并发编程面试题(2022最新版)

    当所有非守护线程结束时,守护线程也会自动结束。 **如何在Windows和Linux上查找哪个线程CPU利用率最高** - **Windows:** 使用`wmic process where name='process_name.exe' get Caption,CommandLine,Processid /...

    Core Java 2 Volume II 7th Edition

    线程属性主要包括线程优先级、守护线程与用户线程的区别、线程组等。 #### 1.5 同步 同步是解决多线程并发操作共享资源时出现问题的一种机制,主要通过`synchronized`关键字或者`ReentrantLock`等工具类来实现。 #...

    Java各种必备面试题目程序代码例子与应战技巧.zip

    - 面试题:什么是守护线程?如何创建和停止线程? - 实战代码:实现Runnable接口和Thread类,演示线程同步(synchronized)和并发工具类(如Semaphore、CountDownLatch)。 6. **IO流**: - 面试题:对比...

    java范例开发大全源代码

     实例139 利用POI读取Word文件中的内容 208  7.3 字符流 209  实例140 按顺序创建文件 210  实例141 按顺序读取文件 211  实例142 追加文件内容 211  实例143 只显示文件中指定的字符 214  实例...

    java范例开发大全

    实例229 变形金刚中的守护神(守护线程) 424 实例230 查看JVM中所有的线程的活动状况 426 实例231 模仿网络快车下载工具下载文件 428 13.2 多线程的同步与互斥 436 实例232 多线程同步方法的实例 436 实例233 ATM...

    Java范例开发大全 (源程序)

     实例139 利用POI读取Word文件中的内容 208  7.3 字符流 209  实例140 按顺序创建文件 210  实例141 按顺序读取文件 211  实例142 追加文件内容 211  实例143 只显示文件中指定的字符 214  实例144 ...

    JAVA程序开发技术

    - **定义**:守护线程是在后台运行的服务线程,不阻止程序退出。 - **作用**:为其他线程提供服务。 - **设置方法**:通过`setDaemon(true)`在启动前设置。 **1.3 线程组** - **概念**:线程组用于管理一组线程,...

Global site tag (gtag.js) - Google Analytics