要非阻塞就用java nio了 

解决方案 »

  1.   

    停留在(i = stream.read()) != -1是你写的不对吧。 
    结束的标志是-1么?  我记得这种执行指令的结束就是为空吧?
      

  2.   

    意图不明,如果你是想等命令执行完再继续执行,那就应该要阻塞;
    如果不想阻塞,那把read放到另外一个线程就可以了,或者参考java.nio
      

  3.   

    启动一个线程来处理就不会阻塞在那里了。IO操作你就得让代码停留在等待读取那里,即便是nio也需要通过轮询的方式让代码一直停留在等待数据那里。否则的话,后面的代码执行完了程序将结束,你的读取操作还有什么意义?