junit作为多线程环境的启动入口
来源:互联网 发布:webstorm mac 破解版 编辑:程序博客网 时间:2024/05/21 02:51
错误现象:
我在调试一个多线程环境下的server程序。用junit的测试方法作为启动,很快程序就退出,而且没有任何异常信息。server程序的逻辑是主线程启动多个线程池后退出。多个线程池的线程都不是Daemon线程。采用main方法启动后程序将不会退出。
原因分析:
在多线程环境下,程序退出的条件是,所有的非Daemon线程都正常结束或者某个线程条用了system.exit方法,导致进程强行退出。在eclipse下运行Junit的类是org.eclipse.jdt.internal.junit.runner.RemoteTestRunner。通过查看这个类的main方法。如下:
- public static void main(String [] args) {
- try {
- RemoteTestRunner testRunServer= new RemoteTestRunner();
- testRunServer.init(args);
- testRunServer.run();
- catch (Throwable e) {
- e.printStackTrace(); // don't allow System.exit(0) to swallow exceptions
- finally {
- // fix for 14434
- System.exit(0);
- }
显然,只要主线程结束,整个程序将会退出,这就是采用junit的时候奇怪退出程序的原因。
解决办法:
在进行多线程测试的时候,进来采用自己写的main方法启动。
0 0
- junit作为多线程环境的启动入口
- C++中类成员函数作为多线程的入口
- 类中封装多线程函数--类成员函数作为多线程函数的入口方法
- 类成员函数作为多线程的入口函数的实现方法
- 类成员函数作为多线程的入口函数的实现方法
- 类成员函数作为多线程的入口函数的实现方法
- 类成员函数作为多线程的入口函数的实现方法
- [深入JUnit] 测试运行的入口
- WPF的启动函数和启动入口
- 有关Junit的多线程测试
- 有关Junit的多线程测试
- 有关Junit的多线程测试
- 有关Junit的多线程测试
- junit引发的多线程思考
- 有关Junit的多线程测试
- Junit测试多线程的问题
- 有关Junit的多线程测试
- Junit单元测试多线程的问题
- FormsAuthenticationTicket对象
- 11g 单实例重新安装GRID报ASM已经存在
- 最大团问题-分支限界算法
- Filter
- MPMoviePlayerViewController 播放完不退出
- junit作为多线程环境的启动入口
- CorePlot学习一
- levelDB的安装与小范例
- c++中的继承中的问题
- 网络库总结
- struts2 常量配置及详解
- We7的区县网站群建设策略
- 使用Splatting在PowerShell中传递参数
- linux 进程间信号量管理程序之sem_timedwait使用