【问题标题】:Handling the IllegalThreadStateException处理 IllegalThreadStateException
【发布时间】:2020-03-25 21:39:44
【问题描述】:
import java.io.*;
class Sysexecute
{
    public static void main(String args[]) throws IOException,InterruptedException,IllegalThreadStateException
    {
        Runtime rt= Runtime.getRuntime();
        Process p=rt.exec("ls");
        System.out.println(p.exitValue());
    }
}

我正在学习如何在 java 中执行系统命令并且发生了这个错误。我尝试使用 throws 来否定它,但没有用。请说明原因及解决方法

actual error:-
Exception in thread "main" java.lang.IllegalThreadStateException: process hasn't exited
    at java.lang.UNIXProcess.exitValue(UNIXProcess.java:270)
    at Sysexecute.main(Sysexecute.java:8)

【问题讨论】:

    标签: java


    【解决方案1】:

    在尝试获取退出值之前调用Process#waitFor()。这会阻塞当前线程,直到生成的进程终止。如果你不这样做,Process#exitValue() 会抛出

    IllegalThreadStateException - 如果这个代表的子进程 Process 对象尚未终止

    【讨论】:

      【解决方案2】:

      始终使用waitFor(long timeout,TimeUnit unit)代替waitFor(),这样线程就不会被无限期阻塞。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-05
        • 2010-10-15
        • 1970-01-01
        • 2020-06-15
        • 1970-01-01
        • 1970-01-01
        • 2018-08-07
        • 2016-04-22
        相关资源
        最近更新 更多