- 论坛徽章:
- 0
|
各位弟兄:我真实急死了!
我的一个java通讯程序,在它的main函数(程序入口)处要启动5,6个模块,每个模块里都会启动2-3个线程来发送,接收或者保存数据,可是现在的状况是:程序运行后启动了第一,二个模块后,主线程死活就停止了一样,后面的模块都不启动了(我的每个模块启动之前都会有log信息打印出来给我看,程序打印1,2个模块的启动信息后,不再打印后面其它模块的信息了),但是这个java进程并没有死,因为已经启动了的两个模块内的线程运行良好。菜鸟俺在windows下跑这个程序一切正常,启动所有模块只有几秒的时间。可是在linux下要好几个小时(20多分钟后,我发现后面的模块还是启动了,晕)。
我真不知道该怎么办,这个程序早两天在linux上也是运行正常的!现在我的扫描模块,接收模块等功能都要在程序启动几十分钟之后才能运行,这程序几乎是费掉了。请求各位大侠给予指教,我的代码如下(在windows上运行正常,而且昨天还在linux上正常,因此我不想考虑代码的问题,请问是否系统在启动第一个,二个模块后,就降低了主线程的优先级别,因此导致1,2模块内的线程运行正常而主线程停止?求问大家了!情况很紧急,谢谢大家了,这是我生产系统上的东东!
Constants.getInstance().initParams();
logger.info("获取配置文件初始化参数完毕!");
this.aSleep(100);
logger.info("正在启动数据库连接管理线程...");
Thread conManager = new Thread(ConnectionManager.getInstance());
conManager.start();
/*
this.aSleep(500);
logger.info("正在启动业务处理线程....");
try {
BusiServer.getInstance().startServer();
}
catch (Exception ex) {
logger.error("启动MM7 业务处理线程出错, 正在退出系统...", ex); //启动处理业务的线程,并向接收服务注册自己
System.exit(1);
}
*/
logger.info("here11111");
this.aSleep(500);
logger.info("正在启动SMS业务处理线程....");
try {
SMSBusiServer.getInstance().startServer();
}
catch (Exception ex) {
logger.error("启动SMS 业务处理线程出错, 正在退出系统...", ex); //启动处理业务的线程,并向接收服务注册自己
System.exit(1);
}
logger.info("here2222222222");
this.aSleep(100);
logger.info("正在启动MMS接收线程...");
if (Constants.MMSC_TYPE.equals("0")) {
// Huawei sdk
// MMSReportReceiver.getInstance().start();
}
else {
// 中移mm7
try {
MM7MmsRevServer.getInstance().startServer();
}
catch (Exception ex) {
logger.error("启动MM7 MMS接收线程失败, 正在退出系统...", ex); //实际启动了接收和保存的线程
System.exit(1);
}
}
this.aSleep(100);
logger.info("正在启动MMS发送线程...");
try {
MmsSenderServer.getInstance().startServer(); //每个发送线程包含了一个mm7sender对象用于发送,一个MmsMtResp用于保存网关回应
}
catch (Exception ex) {
logger.error("启动MMS发送线程失败", ex);
System.exit(1);
}
this.aSleep(100);
logger.info("正在启动扫描数据库MT表线程....");
try {
MmsScanServer.getInstance().startServer(); // 扫描数据库MMS发送表线程,扫描只用了一个线程
}
catch (Exception ex) {
logger.error("启动扫描数据库MMS发送表线程失败", ex);
System.exit(1);
} |
|