A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 337091921 于 2013-5-11 21:51 编辑

我要用序号代替<TransIDC>0000RINPRINP20090715120130004</TransIDC> 里面的内容,遇到了下面几个问题:
1, 我用replace方法contentString.replace("0000RINPRINP20090715120130004",String.valueOf(counter));
虽然在前面打印出counter的值是正确的,但是执行上面的方法后,<TransIDC>里面都是1,于是我改成了先截取<TransIDC>,然后再截取出</TransIDC>,最后拼接起来,结果绝大部分时候是正确的,但是偶尔有几个少了</TransIDC>中的<,成了类似 <TransIDC>101/TransIDC>,
2. 虚拟机能保证java的每个线程都能执行吗?因为看到在打出来的Log中,有的线程好像没有执行,会不会说起的线程太多了,某个线程一直得不到资源,就不能执行,一段时间以后就销毁了。
请大家帮忙看一下原因。



public class MyThread extends Thread {  
    static Logger logger = Logger.getLogger(MyThread.class);  
    int number;  
    long count = 1;  
    static String contentString = <TransIDC>0000RINPRINP20090715120130004</TransIDC>  //FeeConfig.getConfigMap("./src/com/test/fee.config");  
  
    public MyThread(int num) {  
        number = num;  
        logger.debug("创建线程 " + number);  
    }  
  
    @Override  
    public void run() {  
        try {  
            while (true) {                  long startTime = System.currentTimeMillis();  

               startTime = System.currentTimeMillis();  
              long counter = Util.getCounter();  
                         int index1 = contentString.indexOf("<TransIDC>");  
               int index2 = contentString.indexOf("</TransIDC>");  
               // logger.debug("index1:" + index1 + "   index2:" + index2);  
               String tempString1 = contentString.substring(0, index1 + 10);  
                String tempString2 = contentString.substring(index2);  
                                // contentString =  
                // contentString.replace("0000RINPRINP20090715120130004",  
                // String.valueOf(counter));  
              contentString = tempString1 + counter + tempString2;  
               logger.debug("counter:" + String.valueOf(counter));                  
               String response = HttpPost.doHttpPost(contentString);  
  
                 long endTime = System.currentTimeMillis();  
                if (response != null && response.length() > 0) {  
                    // logger.debug(response);  
                    logger.debug("线程 " + number + ":计数 " + String.valueOf(counter) + " get response:使用时间:" + String.valueOf(endTime - startTime));  

              }  
                if (++count == 21) {  
                    return;  
              }  
                Thread.sleep(1000);  
           }  
       } catch (Exception e) {  
          logger.error(e);  
          e.printStackTrace();  
       }  
   }  

   public static void main(String args[]) {         PropertyConfigurator.configure(MyThread.class.getResource("/log4j.properties"));  
         
      for (int i = 0; i < 20; i++) {  
           new MyThread(i + 1).start();  
      }  
        
    }  

      
}  

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

1 个回复

倒序浏览
您需要登录后才可以回帖 登录 | 加入黑马