Blake1991 2015-06-02 03:08 采纳率: 0%
浏览 1512
已结题

多数据下的多线程问题,

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条数据,但下面的线程代码执行不到,求高手解答
  • 写回答

3条回答 默认 最新

  • 关注

    你的线程创建在for循环之外,只有当把for循环执行完以后才会往下执行,而且先要判断你的mList,那么你可以在

     if(mList!=null && mList.size()>0)
    

    的前面打印mList,看是否为null,大小是多少

    评论

报告相同问题?

悬赏问题

  • ¥20 simulink中怎么使用solve函数?
  • ¥30 dspbuilder中使用signalcompiler时报错Error during compilation: Fitter failed,求解决办法
  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 51单片机显示器问题