Java多线程进程

w

我正在为公司创建一个核心服务器管理系统,服务器管理器和服务器本身都是Java jar文件。我需要做的是从服务器管理器启动服务器,并且服务器需要能够读取控制台输入。但是,按照我目前的编码方式,它会忽略控制台输入。我相信while循环会冻结线程,但IDK会如何处理。有任何想法吗?

Process process = Runtime.getRuntime().exec("sh start.sh");
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;

while((line = reader.readLine()) != null){
  System.out.println(line);
}
ControlAltDel

从技术上讲,您的while循环不会冻结线程-对它的调用reader.readLine()我建议您同时收听InputStreamErrorStream,并同时使用Threads或Java NIO来同时进行两者对于Threaded解决方案,我专门为此目的构建并使用了DataFetcher您所需要做的就是在DataFetcher周围创建一个InputStream,添加一个FetcherListener,然后DataFetcher以一个新的开始Thread

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章