public  void receive(){
    try{
prop=System.getProperties();
session=Session.getDefaultInstance(prop,null);
store=session.getStore("pop3");
store.connect(popServer,popUser,popPassword);
folder=store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
         checkInbox(folder);
         try{
  if(folder.isOpen())
                 folder.close(false);
           if(stroe!=null) store.close();
         }              
        catch(Exception ex2){System.out.println(ex2.printStackTrace();}
    catch(Exception ex2){
         try{ 
 if(folder.isOpen())
            folder.close(false);
 if(store!=null) store.close();
         catch(Exception ex3){System.out.println(ex3.printStackTrace();} 
         System.out.println(ex2.printStackTrace();}   
    }
 }
代码大概就是这样
 checkInbox(folder)是一个查看INBOX中messageCount的方法。
我定义了一个线程类,在类里创建了这个方法所属类的一个实例,然后循环调用这个方法,但程序循环执行这个方法几次过后,线程就停止了,每次都是在
foler.close()或着store.close()这两行代码处停止,也不抛出异常,这是为什么???谢谢了!
      

解决方案 »

  1.   

    大概是阻塞住了,那么你看看folder或者store类里的close方法是不是调用了
    notifyAll方法。当然之前它必须调用wait.
      

  2.   

    我的代码里没有同步的方法,也没有用wait(),notifyall()之类的方法了。救救我呀!!!
      

  3.   

    看来不像是被阻塞,多打些调试语句,尤其是folder.close()和store.close()方法里;
    隔一句打一个:
    System.out.println(System.currentTimeMillis());
      

  4.   

    System.out.println(System.currentTimeMillis());
    folder.close(false);
    System.out.println(System.currentTimeMillis());控制台:只输出一个时间值,还是过不了,这到底是什么原因?哪位高手指点指点!小弟愿意再加分相送!谢谢了!!!
      

  5.   

    你不应该在每次循环receive()方法时都关闭与POP的服务器连接,应该在所有内容取得完毕后,才关闭连接。
      

  6.   

    改folder.close()方法,在里面加:
    System.out.println(System.currentTimeMillis());
    看到底谁把时间吃了
    别怕麻烦!
      

  7.   

    to: ggzzkk(蓝色的狮子):
    我的代码流程是都把内容取完了,才关闭连接的啊,我只能在receive()方法里关闭打开的连接,不然程序运行就会越来越....to:sun1979song(十步杀一人):
    folder.close()里面怎么加 System.out.println(System.currentTimeMillis());啊,这个方法是系统类方法,不是我定义的啊。
      

  8.   

    哦,我以为全部都是你写的。
    那不好说了,看来你得怀疑你调用的东东,再看看api说明,解开jar文件,反编译
      

  9.   

    你的checkInbox(folder)方法不是取内容的吗?这个方法不应该放在receive()里呀,你应该
    while(true)
    {
      checkInbox(folder);//只取内容
    }
    receive();//只做关闭