高分求助java高手!windows server 2003上线程占有99%的cpu导致项目无法运行 会不会是进程死锁了。原因是你的代码使用的某个资源把2003 server系统中某个关键进程需要用到的资源给占用了。然后,而你代码里需要的另一个资源又被这个关键进程已经占用,造成双方等待,进程死锁。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 程序在不停的执行下面的循环,从控制台可以看见每隔大概一秒就打印出try中字符串{{{{{{{{{{:: + out + " ::}}}}}}}} while(!parallelFlag.isZero()){ try{ Thread.sleep(ServiceConstant.SLEEP_TIME); System.out.prinln("{{{{{{{{{{:: " + out + " ::}}}}}}}}"); }catch(Exception e){ logger.info("sleep error::"+e+""); } } windows下,XP和2003区别是不大的,又不是linux,你先确认下机器的环境是否正确安装吧?比如说JDK的版本,系统的JAVA环境变量,安装Tomcat的时候本地dll是否正确下载另外,贴出exeAllInstantService方法的代码看下? !parallelFlag.isZero()<----是不是程序逻辑问题,按字面,这里的并行标识一直不为0. 也想xp和2003区别不大啊。但的确同样的程序放到2003上就拼命的吃cpu。以下是方法代码 public static String exeAllInstantService(String Key) { init(); long start=System.currentTimeMillis(); long tmp=0; final InstantItemList iil = new InstantItemList(); final ParallelFlag parallelFlag=new ParallelFlag(); InstantCondition ic=new InstantCondition(Key); iil.setMarkKey(ic); for (int i = 0; i < serviceInfoList.size(); i++) { ServiceInfo si = (ServiceInfo) serviceInfoList.get(i); if(logger.isInfoEnabled()){ logger.info("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"+si.serviceName+" start &&&&&&&&&&&&&&&&&&&&&&&&&"); tmp = System.currentTimeMillis(); } if (si.isInstantService()) { System.out.println("index1: " + parallelFlag.getCount()); synchronized(parallelFlag){ System.out.println("index2: " + parallelFlag.getCount()); parallelFlag.increase(); System.out.println("index3: " + parallelFlag.getCount()); } Call call = ServiceOperator.getCall(si.serviceUrl,si.serviceName); AsyncCall ac = new AsyncCall(call, new IAsyncCallback() { public void onCompletion(IAsyncResult result) { System.out.println("Asy Call.."); Status status = result.getStatus(); if (status.COMPLETED == Status.COMPLETED ) { String ret = (String) result.getResponse(); System.out.println("index4: " + parallelFlag.getCount()); synchronized(parallelFlag){ System.out.println("index5: " + parallelFlag.getCount()); parallelFlag.decrease(); System.out.println("index6: " + parallelFlag.getCount()); if((!(ret.equalsIgnoreCase(ServiceConstant.CONST_ERROR_SERVICE))&&(ret.length()>1))){ // logger.info("start instantItem:::::::::::::::::::::::::::::::::"+ret); InstantItem iiTmp = new InstantItem(ret); ServiceInfo si = ServiceInfoList.getServiceInfoByName(iiTmp.getLocalServiceName()); if(si.isHaveNextService)iiTmp.setServiceUrl(si.instantNextServiceUrl); iil.addInstantItemByPri(iiTmp,si.pri);// logger.info("add one intantItem::"+ret); } } } else if (status == Status.EXCEPTION) { result.getException().printStackTrace(); }// logger.info(".....FINISHED"); } }); IAsyncResult result = ac.invoke(new Object[]{Key}); }// if(logger.isInfoEnabled()){// logger.info("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"+si.serviceName+" has finished in "+(System.currentTimeMillis()-tmp));// } } while(!parallelFlag.isZero()){ try{ Thread.currentThread().sleep(ServiceConstant.SLEEP_TIME);// logger.info("has sleep for "+ServiceConstant.SLEEP_TIME); }catch(Exception e){ logger.info("sleep error::"+e+""); } } String ret =iil.getXml(); if(logger.isInfoEnabled()){ logger.info("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& All instant Service has finished in "+(System.currentTimeMillis()-start)); } return ret; } xp,2003的配置怎样???Cpu Mom cpu是intel至强四核,内存2G。 线程池的大小如何控制? 为什么我的hibernate.hbm2ddl.auto设置为update还是没法自动创建表 求Java实现rtmp协议的基本代码 高手请进,apache warn 怎么解决啊! 帮一个朋友问一下。如何修改weblogic中连接池的名称 下午去应聘java测试工程师,应注意些什么,过来人帮忙提提注意事项啊!先叩谢了 ibatis 2.0.9 n+1问题解决方案,实践未成功,困惑ing 问基础概念:本地接口、远程接口 请问如何更改tomcat的虚似路径? 再次询问sdk的环境变量如何设置!十分感谢! 设计模式问题 javascript脚本乱码问题
try{
Thread.sleep(ServiceConstant.SLEEP_TIME);
System.out.prinln("{{{{{{{{{{:: " + out + " ::}}}}}}}}");
}catch(Exception e){
logger.info("sleep error::"+e+"");
}
}
比如说JDK的版本,系统的JAVA环境变量,安装Tomcat的时候本地dll是否正确下载另外,贴出exeAllInstantService方法的代码看下?
也想xp和2003区别不大啊。但的确同样的程序放到2003上就拼命的吃cpu。以下是方法代码 public static String exeAllInstantService(String Key) {
init();
long start=System.currentTimeMillis();
long tmp=0;
final InstantItemList iil = new InstantItemList();
final ParallelFlag parallelFlag=new ParallelFlag();
InstantCondition ic=new InstantCondition(Key);
iil.setMarkKey(ic);
for (int i = 0; i < serviceInfoList.size(); i++) {
ServiceInfo si = (ServiceInfo) serviceInfoList.get(i);
if(logger.isInfoEnabled()){
logger.info("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"+si.serviceName+" start &&&&&&&&&&&&&&&&&&&&&&&&&");
tmp = System.currentTimeMillis();
}
if (si.isInstantService()) {
System.out.println("index1: " + parallelFlag.getCount());
synchronized(parallelFlag){
System.out.println("index2: " + parallelFlag.getCount());
parallelFlag.increase();
System.out.println("index3: " + parallelFlag.getCount());
}
Call call = ServiceOperator.getCall(si.serviceUrl,si.serviceName);
AsyncCall ac = new AsyncCall(call, new IAsyncCallback() {
public void onCompletion(IAsyncResult result) {
System.out.println("Asy Call..");
Status status = result.getStatus();
if (status.COMPLETED == Status.COMPLETED ) {
String ret = (String) result.getResponse();
System.out.println("index4: " + parallelFlag.getCount());
synchronized(parallelFlag){
System.out.println("index5: " + parallelFlag.getCount());
parallelFlag.decrease();
System.out.println("index6: " + parallelFlag.getCount());
if((!(ret.equalsIgnoreCase(ServiceConstant.CONST_ERROR_SERVICE))&&(ret.length()>1))){
// logger.info("start instantItem:::::::::::::::::::::::::::::::::"+ret);
InstantItem iiTmp = new InstantItem(ret);
ServiceInfo si = ServiceInfoList.getServiceInfoByName(iiTmp.getLocalServiceName());
if(si.isHaveNextService)iiTmp.setServiceUrl(si.instantNextServiceUrl);
iil.addInstantItemByPri(iiTmp,si.pri);
// logger.info("add one intantItem::"+ret);
}
}
} else if (status == Status.EXCEPTION) {
result.getException().printStackTrace();
}
// logger.info(".....FINISHED");
}
});
IAsyncResult result = ac.invoke(new Object[]{Key});
}
// if(logger.isInfoEnabled()){
// logger.info("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"+si.serviceName+" has finished in "+(System.currentTimeMillis()-tmp));
// }
}
while(!parallelFlag.isZero()){
try{
Thread.currentThread().sleep(ServiceConstant.SLEEP_TIME);
// logger.info("has sleep for "+ServiceConstant.SLEEP_TIME);
}catch(Exception e){
logger.info("sleep error::"+e+"");
}
}
String ret =iil.getXml();
if(logger.isInfoEnabled()){
logger.info("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& All instant Service has finished in "+(System.currentTimeMillis()-start));
}
return ret;
}
cpu是intel至强四核,内存2G。