2014-02-11 06:30:02

阅读( 383 )

守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的意思)。

在java中没有原生的守护进程支持,我们可以使用apache的deamon包来实现。

首先需要引用上面提到的包,然后需要在项目的入口类假定为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 outofmemory.cn

* @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中启动了此线程,在停止方法中停掉了此线程。

分享给朋友:

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息:

面试题

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐