欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java使用appache deamon实现linux守护进程,appachedeamon,守护进程,也就是通常说的

来源: javaer 分享于  点击 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中启动了此线程,在停止方法中停掉了此线程。

相关栏目:

用户点评