java main执行时如果外部资源没有关闭可能导致报错后程序不退出一直等待
2012-11-19 10:34
369 查看
在项目中写一个定时任务使用crontab来运行。
任务逻辑直接使用java main来作为入口运行。
如:
mvn -e exec:java -Dexec.mainClass="com.sohu.sendCloud.controller.RunUserRequestAnalysis"
如果程序中有报错,即使错误被正常捕捉了。debug发现程序也执行到了最后一句,但是程序依旧没有退出,可能是资源没有充分关闭导致。
后续再继续查这个问题。
但是建议在程序需要退出的时候加上一句:
保证程序的运行,因为crontab进程会定期去执行的,如果程序没有退出,会导致大量的进程堆积。
使用这个方法可以解决。
任务逻辑直接使用java main来作为入口运行。
如:
mvn -e exec:java -Dexec.mainClass="com.sohu.sendCloud.controller.RunUserRequestAnalysis"
如果程序中有报错,即使错误被正常捕捉了。debug发现程序也执行到了最后一句,但是程序依旧没有退出,可能是资源没有充分关闭导致。
后续再继续查这个问题。
但是建议在程序需要退出的时候加上一句:
System.exit(0); //1:异常退出,0正常退出
保证程序的运行,因为crontab进程会定期去执行的,如果程序没有退出,会导致大量的进程堆积。
使用这个方法可以解决。
相关文章推荐
- JAVA程序,SESSION没有关闭导致数据库异常
- JAVA程序,SESSION没有关闭导致数据库异常
- win7程序关闭后弹出 程序兼容性助手 这个程序可能安装不正确 如果此程序没有正确安装,处理方式
- 在程序退出main()函数之后,还有可能执行一部分代码吗?
- win7程序关闭后弹出 程序兼容性助手 这个程序可能安装不正确 如果此程序没有正确安装,处理方式
- Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。
- C 语言main 函数终极探秘(&& 的含义是:如果 && 前面的程序正常退出,则继续执行 && 后面的程序,否则不执行)
- java程序执行外部命令
- eclipse新建maven工程却没有自动建立src/main/java资源解决办法
- 为什么执行JAVA程序时,会出现Exception in thread"main"java.lang.NoClassDefFoundError的错?
- main()如果返回0,则代表程序正常退出,返回非零代表程序异常退出。
- JavaScript interval 的一个坑 : 重新赋值 interval 如果前一个没有关闭, 那将会一直执行!
- “在应用程序级别之外使用注册为 allowDefinition=’MachineToApplication’ 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误”的解决方法
- 通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件。
- crontab监控java程序,如果没有启动则启动java程序
- allowDefinition='MachineToApplication' 原因:如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。
- 通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件
- JAVA程序退出时执行的操作Runtime类的addShutdownHook函数使用示例
- maven 打包时,src/main/java目录下的xml等资源文件没有打包进去的问题
- 如果在IIS中没有将虚拟目录配置为应用程序,则可能导致此错误