for(int i=0;i<CList.size();i++){
Map map=new HashMap();
Map map1=new HashMap();
String url = (String) CList.get(i).get("url");
map.put("url",url);
Clob clob=(Clob) CList.get(i).get("content");
Reader inStream = clob.getCharacterStream();
BufferedReader br=new BufferedReader(inStream);
String data=null;
data=br.readLine();
StringBuffer sb =new StringBuffer();
if(data!=null){
sb.append(data);
}
String reString =sb.toString();
reString=reString.replaceAll("[\\pP+~$`^=|<>~`$^+=|<>¥×]", "").replaceAll("\\s+","").replaceAll("\u3000","");
List<Term> tList = NlpAnalysis.parse(reString,forest);
System.out.println("=============================================");
System.out.println("=============================================");
System.out.println("=============================================");
System.out.println("第 "+i +" 次执行。。。。。。。。。。。");
System.out.println("------------------------------------------------------>");
System.out.println("------------------------------------------------------>");
System.out.println("------------------------------------------------------>");
new NatureRecognition(tList).recognition();
tList = FilterModifWord.modifResult(tList);
System.out.println("-------------------------------------------------------------------------------------");
System.out.println(tList);
System.out.println("-------------------------------------------------------------------------------------");
String aStr = getFormatStr(tList);
System.out.println(aStr);
String gmid = (String) CList.get(i).get("gm_id");
map.put("content", aStr);
map.put("gm_id", gmid);
if( gmid!=null && gmid !=""){
map1.put("url",url);
map1.put("content", aStr);
map1.put("gm_id",gmid);
}
System.out.println(mList);
mList.add(map);
mList1.add(map1);
}
if(mList!=null && mList.size()>0){
ThreadPool tp = new ThreadPool(mList,1,flag1);
tp.run();
}
if(mList1!=null && mList1.size()>0){
ThreadPool ct1 = new ThreadPool(mList1,2,flag1);
ct1.run();
}
cList大概有3000条数据,但下面的线程代码执行不到,求高手解答
你的线程创建在for循环之外,只有当把for循环执行完以后才会往下执行,而且先要判断你的mList,那么你可以在
if(mList!=null && mList.size()>0)
的前面打印mList,看是否为null,大小是多少
由于没有全部的代码,所以最大的可能是:你的子线程被创建了,但是还没有来得及执行,父线程(我猜是main)就执行完了,程序结束,因此子线程还来不及执行就被停止了。
建议你在代码的后面加上一句
Thread.sleep(10000);
然后看看情况。
线程未执行是因为if条件不满足,为什么不满足,mlist在for执行完就是null,代码完全吗?
检查:在for里边是空的吗?在for之后是空的吗?