java控制语句中的经典问题 Java进程和操作系统进程有什么关系?
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命令启动的子进程执行完毕,然后执行主线程。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。