我们在调用Process的waitFor()时经常会遇到明明Process已经结束了,但是waitFor()还是阻塞在那里,那是因为Process的inputStream缓存造成的,我们现在另外再起一个线程,来监控我们的Process,实时清空缓存就可以解决这个问题了
然后在waitFor之前插入
在waitFor之后插入
这样,即清空了inputStream,又不会造成需要的人无法获取inputStream的信息,waitFor()阻塞的问题也解决了
本文介绍了一种解决Java中Process.waitFor()方法在进程结束后仍阻塞的问题的方法。通过创建一个额外的线程来持续读取并清空Process的输入流,确保waitFor()能够正确响应进程结束。
我们在调用Process的waitFor()时经常会遇到明明Process已经结束了,但是waitFor()还是阻塞在那里,那是因为Process的inputStream缓存造成的,我们现在另外再起一个线程,来监控我们的Process,实时清空缓存就可以解决这个问题了
然后在waitFor之前插入
在waitFor之后插入
这样,即清空了inputStream,又不会造成需要的人无法获取inputStream的信息,waitFor()阻塞的问题也解决了
1335
6323