解决方案 »

  1.   

    connector.run();执行到这句,主线程就停在这句了。根本没有走到connector.shutdown();
      

  2.   

    一般Runnable都是放在一个Thread 里跑的
     Connector connector = new Connector();
    Thread t = new Thread(connector);
    t.start();
      

  3.   


    因为run()里的start始终是true啊
    而且你这线程对象调用run(),完全没有意义啊
      

  4.   

    你这里
    Connector connector = new Connector();
            connector.run();
    不是线程,所以函数执行到 connector.run();一直在while循环里,下面一句话一直没有执行connector.shutdown();
    你的意思应该是启动线程。
     Connector connector = new Connector();
    Thread t = new Thread(connector);
    t.start(); 
      

  5.   


          public static void main(String[] args) {
            Connector connector = new Connector();
            connector.run();
            connector.shutdown();
        }
         
    改为
    Connector connector = new Connector();
    Thread t = new Thread(connector);
    t.start();
    Thread.sleep(10);
    connector.shutdown();
      

  6.   

    Connector connector = new Connector();
    connector.run();       
    connector.shutdown(); 这3行代码都是同步的,每一行都是阻塞的,第二行并非启动线程,只是调了一个死循环的方法,所以一直阻塞
      

  7.   

    好吧,我2了,忘了connector.run(); 是同步的
      

  8.   

    这里我还有一个问题啊,如果我改成Thread t = new Thread(connector); t.start(); 
    能正常结束。
    但是如果我把t.start() 改成t.run()的话,他还是停不下来
      

  9.   

    run是一个方法,跟线程就没有关系了,相当run方法里面一个死循环,所以一直会执行while
      

  10.   

    程序执行顺序楼主肯定是清楚的,由上向下顺序执行,遇到循环则反复,遇到分支则选择,而楼主的代码遇到循环,没有退出条件,则为死循环,无法跳出run函数,因此继续执行shutdown。
      

  11.   


    在请教你们一个问题啊,Thread的停止,stop()不是被interrupt()代替了嘛,但是interrupt()只能停止那些阻塞的线程,那不阻塞的死循环线程呢,用什么来停止呢?