问题描述
stream=Runtime.getRuntime().exec(command).getInputStream();while((i=stream.read())!=-1){System.out.print((char)i);}当这个线程开启后,一直停留再read()中,会造成阻塞,有没有非阻塞实现方式。
解决方案
解决方案二:
IO不阻塞的话读什么啊。。。?非要继续运行的话多开一个线程吧
解决方案三:
要非阻塞就用javanio了
解决方案四:
停留在(i=stream.read())!=-1是你写的不对吧。结束的标志是-1么?我记得这种执行指令的结束就是为空吧?
解决方案五:
参考javanio
解决方案六:
意图不明,如果你是想等命令执行完再继续执行,那就应该要阻塞;如果不想阻塞,那把read放到另外一个线程就可以了,或者参考java.nio
解决方案七:
启动一个线程来处理就不会阻塞在那里了。IO操作你就得让代码停留在等待读取那里,即便是nio也需要通过轮询的方式让代码一直停留在等待数据那里。否则的话,后面的代码执行完了程序将结束,你的读取操作还有什么意义?
时间: 2024-09-13 11:48:21