Java使用appache deamon实现linux守护进程,appachedeamon,守护进程,也就是通常说的
分享于 点击 13763 次 点评:239
Java使用appache deamon实现linux守护进程,appachedeamon,守护进程,也就是通常说的
守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的意思)。
在java中没有原生的守护进程支持,我们可以使用apache的deamon包来实现。 其项目首页的地址在:http://commons.apache.org/proper/commons-daemon/
首先需要引用上面提到的包,然后需要在项目的入口类假定为App继承org.apache.commons.daemon.Deamon接口然后实现Deamon接口的init,start,stop,destroy方法。
如下是一段实现守护进程的示例代码:
package cn.outofmemory.test;import org.apache.commons.daemon.Daemon;import org.apache.commons.daemon.DaemonContext;import org.apache.commons.daemon.DaemonInitException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * 统计进程入口类 * * @author byrx.net * @date 2013-03-06 */public class App implements Daemon { private static final Logger logger = LoggerFactory.getLogger(App.class); public static void main(String[] args) throws Exception { logger.info("radar alarm main start ..."); App app = new App(); app.init(null); app.start(); logger.info("radar alarm main started"); } private StatisticsThread statisticsThread; @Override public void init(DaemonContext dc) throws DaemonInitException, Exception { logger.info("initializing ..."); statisticsThread = StatisticsThread.getInstance(); } @Override public void start() throws Exception { logger.info("starting ..."); statisticsThread.start(); } @SuppressWarnings("deprecation") @Override public void stop() throws Exception { logger.info("stopping ..."); statisticsThread.stop(); } @Override public void destroy() { logger.info("done."); } }
上述程序在初始化时初始化了一个统计线程,在start中启动了此线程,在停止方法中停掉了此线程。
用户点评