java 守护进程 linux_Java使用appache deamon实现linux守护进程
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中启动了此线程,在停止方法中停掉了此线程。
分享给朋友:
亲~ 如果您有更好的答案 可在评论区发表您独到的见解。
您想查看更多的信息:
面试题
java 守护进程 linux_Java使用appache deamon实现linux守护进程相关推荐
- linux父子进程字写父读无效,linux父子进程
1)因为nginx的worker进程都是master进程fork出来的,继承了监听句柄. 2)nginx实现了一个锁,work进程竞争,谁获取锁,谁accept连接.######正解!######自己 ...
- Linux查看进程线程个数
1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{pr ...
- 优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM 深度/机器学习 AI opencv nlp)
pudn 阿甘兄 前端 服务端 底层 移动端 大数据 云计算 AI 培训机构的课程差不多就这一套了 大数据 AI NLP 高等数学 LeetCode.<数据结构与算法之美>学习笔记.AI ...
- 优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM AI 深度/机器学习 opencv nlp)
pudn 阿甘兄 前端 服务端 底层 移动端 大数据 云计算 AI 培训机构的课程差不多就这一套了 LeetCode.<数据结构与算法之美>学习笔记.AI 前端资料学习,vue.js re ...
- linux下的进程创建,Linux下进程的创建
这篇文章主要是讲解到Linux进程的控制,包括程序和进程.守护进程.守护进程的出错处理. 1.程序和进程 程序(program)是存放在磁盘文件中的可执行文件,程序的执行实例被称为进程(process ...
- Linux 如何取进程运行时间,linux -- 获取进程执行时间
获取进程执行时间 一.时间概念 在linux下进行编程时,可能会涉及度量进程的执行时间.linux下进程的时间值分三种: 时钟时间(real time):指进程从开始执行到结束,实际执行的时间. 用户 ...
- 使用linux命令查看进程,Linux查看进程命令有哪些
我们在使用Linux系统的过程中,有的时候会需要查看后台进程,并选择性的关闭一些不用的进程,那么Linux中有哪些查看进程的命令呢?今天小编就来为大家总结整理一些常用的Linux查看进程命令. Lin ...
- linux查看进程运行命令行参数,linux查看进程运行命令
Linux系统下想要查看运行中的进程,那我们该使用那个命令呢?下面由学习啦小编为大家整理了linux查看进程运行的命令的相关知识,希望对大家有帮助. 1.linux查看进程命令详解 ps命令查找与进程 ...
- Linux查看进程命令有哪些?
我们在使用Linux系统的过程中,有的时候会需要查看后台进程,并选择性的关闭一些不用的进程,那么Linux中有哪些查看进程的命令呢?今天达妹就来为大家总结整理一些常用的Linux查看进程命令. Lin ...
最新文章
- CRNN维度变换的解释这样你也可以自定义CRNN了
- 文献记录(part83)--Building outlier detection ensembles by selective parameterization of ...
- ordereddict有序字典
- Cocos2dx实现象棋之布局
- 软件工程生命周期模型_软件生命周期模型比较| 软件工程
- 小白程序员最容易踩的“坑”,你踩过几个?
- Problem J: 蛇形填阵
- Centos下tomcat配置
- 2.5 HDFS体系架构
- install在python里什么意思_“pip install”和“python-m pip install”有什么区别?
- 算数-02-史丰收算法
- ORACLE SQL 优化的若干方法(详细)
- python中列表下标,python打印列表中指定元素的所有下标
- c语言第五章答案许合利,C语言习题答案贾宗璞许合利较全-.doc
- python add picture显示过大_利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例...
- Exiting on user cancel解决
- 使用FleaPHP框架构建简单留言本应用
- 黑马手机卫士黑名单电话拦截 使用ITelephony.aidl和NeighboringCellInfo.aidl 自动拦截黑名单电话 附文件
- 不再纠结devDependencies与dependencies
- Docker一键安装RocketMQ(All in one Docker)
热门文章
- java jdbc oracle rac_JDBC连接oracle RAC数据库配置
- php 设置页面内容具有缓存性,php header()设置页面Cache缓存
- MySQL安装过程中出现的vcruntime140.dll缺失
- Python中的zip函数
- JS保证输入框里面的数值是数字
- canvas刷新_【前端冷知识】Canvas 滤镜的性能优化
- android实现字体滚动,Android实现字幕滚动的方法
- javascript手册安卓版_JavaScript 完全手册(2018版)
- mysql中如何将几个没有关系的结果集放在一起
- Maven技巧和窍门:高级Reactor选项