2016 - 2024

感恩一路有你

java控制语句中的经典问题 Java进程和操作系统进程有什么关系?

浏览量:1537 时间:2023-06-15 13:01:58 作者:采采

Java进程和操作系统进程有什么关系?

Java进程是创建操作系统的进程,即JVM中创建的每个进程对应操作系统中的一个进程。但是为了给用户更好更方便的使用,Java对用户屏蔽了一些平台相关的信息。

使用C/C创建系统进程时,可以进行PID值,通过这个PID可以直接操作相应的进程。但在JAVA中,用户只能通过实例的引用来操作。当参考丢失或不可用时,他们可以 我不知道任何关于进展的信息。

使用Java进程时需要注意一些事情:

Java提供的输入输出的流水线能力是非常有限的。如果不及时读取,会导致进程暂停,甚至死锁。当创建一个进程来执行Windows下的系统命令时,如dir、copy等。您需要运行Windows的命令解释器,command.exe/cmd.

java如何实现了cmd多条命令交互操作?

在java中调用操作系统程序时,可以使用()。exec()来实现,但是这个方法调用命令后直接返回到当前线程;在设计程序时,有时只有在等待被调用的系统程序完成其操作后,当前线程才能进行下一步操作。这时可以用类进程的方法waitFor()来实现,它会阻塞上一个线程,直到调用程序运行完毕。流程()。exec()//执行命令以生成多维数据集try {

process.waitFor()

} catch (InterruptedException e) {

// TODO自动生成的catch块

()

}

proc_stat checkFil: 3

[java]查看纯文本

流程()。exec()//执行生成多维数据集的命令。

尝试{

process.waitFor()

} catch (InterruptedException e) {

// TODO自动生成的catch块

()

}

proc_stat checkFil: 3

流程的waitFor()方法引自API文档:

等待

public abstract int waitFor()

Throws InterruptedException导致当前线程等待,直到Process对象表示的进程终止(如果需要)。如果子进程已经终止,此方法将立即返回。如果子进程没有终止,调用线程将被阻塞,直到子进程退出。

返回:

流程的导出值。按照惯例,0表示正常终止。

投掷:

如果当前线程在等待时被另一个线程中断,它将停止等待并抛出一个InterruptedException。

自我练习:

执行多个cmd命令。

string cmd cmd/c G: ampamp CD g:projectstestproject ampamp start mvn包

处理流程()。执行(指令)

process.waitFor()

process.exitValue()

这允许执行多个命令。

值得注意的是,执行start mvn包时,会打开一个窗口,调用process.waitFor()。主线程不会被阻塞,但会返回成功执行的process.exitValue() 0。

移除start mvn包中的start后,主线程会一直阻塞,直到cmd命令启动的子进程执行完毕,然后执行主线程。

进程 命令 线程 方法 流程

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。