我表达的不太清楚,我的意思是我的函数停在那不继续执行了.cpu空闲

解决方案 »

  1.   

    把代码贴出来看看.
    在循环中加点sleep,gc什么的.
      

  2.   

    public void run()
      {
        processurl();
      }
     public void  processurl()
      {
        String url;
        String site;
        String sort;
        Vector sortUrlV=new Vector();
        Vector detailUrlV=new Vector();
        String pageurl;    sortUrlV=getnewsurl();
        Enumeration sortUrlE=sortUrlV.elements();
        while(sortUrlE.hasMoreElements()&& (!isStopped()) )
        {
          sort=sortUrlE .nextElement().toString().trim();
          site=sortUrlE .nextElement().toString().trim();
          url=sortUrlE .nextElement().toString().trim();
          detailUrlV=getDetailUrl(url,site);
          Enumeration detailUrlE=detailUrlV.elements();
          while(detailUrlE.hasMoreElements() && (!isStopped()))
          {
            pageurl=detailUrlE.nextElement().toString() .trim();
            try {
              if (isSleepScheduled()) {
                try {
                  Thread.sleep(SLEEP_TIME);
                  setSleepScheduled(false);
               }
               catch (InterruptedException ie) {
                 setStopped(true);
                 break;
              }
    }
              getnews(pageurl, site, sort);
            } catch (Exception e) {
              setStopped(true);
                     break;
            }
            synchronized (this) {
              if (isSuspended()) {
                try {
                  this.wait();
                  setSuspended(false);
                }
                catch (InterruptedException ie) {
                  setStopped(true);
                  break;
                }
              }
            }
            if (Thread.interrupted()) {
              setStopped(true);
              break;
            }
          }
        }
      }
    sortUrlV和detailUrlV比较大,getnews(pageurl, site, sort)运行一次要半分钟左右.经常是while循环执行不完就不继续了.
    请大家帮忙看看什么问题,怎么解决一下?
    另外,我用public synchronized void setStopped(boolean stop) {stopped = stop;  }控制线程的暂停,可是isstopptd=ture却暂停不了,这是哪的问题?
    3x