java 多线程获取返回值 java如何实现了cmd多条命令交互操作?
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命令启动的子进程执行完毕,然后把先执行主线程。
多线程怎么得到返回值?
线程的返回值问题,最实现理想的办法应该是线程来通知到调度线程,这个指挥调度线程是可以是主线程,也这个可以是一个一类的调度线程,突然之间任务线程完成了自己的工作,就安排调度线程来取结果,那样的话才能可以发挥出多线程的优势,而不是在那里傻等。
如果没有你把主线程拿出来调度线程,而你的主线程存在地消息循环,这样的话,利用消息那就是另一个确实不错的通知。
任务线程成功了工作之后,向主线程发消息,消息中可以把任务线程本身(线程类)发给主线程,然后再在主线程中收起这个线程类,接着我得到任务线程的处理结果。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。