2016 - 2024

感恩一路有你

java 多线程获取返回值 java如何实现了cmd多条命令交互操作?

浏览量:3473 时间:2023-06-19 22:48:41 作者:采采

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

在java中动态链接库操作系统的程序时,可以使用().exec()来利用,但是这个方法在动态链接库命令后就真接直接返回当前线程了;程序设计时,总是必须在再等待动态创建的系统程序成功操作后,当前线程才能做接下来不能操作,此时也可以用类Process的方法waitFor()来实现,它会阻塞住当先线程至使调用程序运行结束后process().exec()//负责执行命令生成cubetry{

process.waitFor()

}catch(InterruptedExceptione){

//TODOAuto-referencedcatchblock

()

}

proc_statcheckFileSize()?1:3

[java]viewplain内容复制

process().exec()//执行命令生成cube

try{

process.waitFor()

}catch(InterruptedExceptione){

//TODOAuto-definedcatchblock

()

}

proc_statcheckFileSize()?1:3

Process的方法waitFor()介绍,语出API文档:

waitFor

employeeabstractintwaitFor()

throwsInterruptedException导致当前线程耐心的等待,要是必要,一直在要等待由该Process对象表示的进程早就暂时终止。如果已强制停止该子进程,此方法立玄回。如果没有是没有重新开启该子进程,动态创建的线程将被阻塞,直到此时解盟子进程。

回:

进程的出口值。根据惯例,0它表示正常吗强制停止。

一抛:

InterruptedException-如果当前线程在静静的等待时被另一线程网络中断,则突然停止等待,抛出InterruptedException。

自我实践:

负责执行多条cmd命令

Stringcmdcmd/cG:ampampcdG:projectstestProjectampampstartmvnpackage

Processprocess().exec(cmd)

process.waitFor()

process.exitValue()

这样是可以想执行多条命令。

值得注意的是:先执行startmvnpackage,会开启窗口,调用process.waitFor(),主线程不可能被阻塞,只不过是会返回想执行成功process.exitValue()0

将startmvnpackage中start去掉后,主线程就会阻塞,待到cmd命令启动的子进程执行完毕,然后把先执行主线程。

多线程怎么得到返回值?

线程的返回值问题,最实现理想的办法应该是线程来通知到调度线程,这个指挥调度线程是可以是主线程,也这个可以是一个一类的调度线程,突然之间任务线程完成了自己的工作,就安排调度线程来取结果,那样的话才能可以发挥出多线程的优势,而不是在那里傻等。

如果没有你把主线程拿出来调度线程,而你的主线程存在地消息循环,这样的话,利用消息那就是另一个确实不错的通知。

任务线程成功了工作之后,向主线程发消息,消息中可以把任务线程本身(线程类)发给主线程,然后再在主线程中收起这个线程类,接着我得到任务线程的处理结果。

线程 命令 主线 process 方法

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