晚上不睡觉白天起不来 2013-07-26 03:57 采纳率: 100%
浏览 2722
已采纳

java多进程调度的问题,求大神帮忙。

我是使用ffmpeg.exe来进行视频格式的转换的:
第一:我执行一个main方法,这时(java.exe)这个进程就会被load到内存中被执行,然后继续执行main的主线程。
第二:这时我又开了一个其他线程,来执行视频的格式转换,此时会帮我新创建出一个新进程(ffmpeg.exe)来。
第三:这时候出现了两个进程,随之而来的也出现了问题。

经过分析测试发现:
1、只有java.exe进程结束后,才会执行ffmpeg这个进程。这并不是我想要的。
2、我需要的执行顺序是这样:先执行java.exe进程,再转码进程ffmpeg.exe执行完,然后再继续java.exe进程
3、因为在执行ffmpeg.exe这个进程中,我需要通过java.exe进程 来检测ffmpeg.exe进程的视频转码是否完成,返回给客户端,判断是否继续执行

我的问题:
1、java在创建进程的时候是否可以设置该进程的优先级?
2、我可以通过java来获取一个进程的执行时间么?
3、为什么只有在java.exe进程结束后才会执行ffmpeg.exe进程?
4、默认的cpu调度进程的算法是什么算法啊?(windows)

特别说明:
1、可能我的表达不是很清楚,各位大神的帮忙,小弟不胜感激。
2、文字会比较多,如果看不太懂,我可以具体说说

  • 写回答

2条回答

  • fangliang510 2013-07-27 03:30
    关注

    按照我的理解,你的需求就是在java的主进程中调用一个ffmpeg.exe,这个在java中应该是这样的代码:
    String[] cmdArray = buildComStringArray(cmd);//忽略实现cmd就是你的fmpeg.exe
    ProcessBuilder pb = new ProcessBuilder(cmdArray);
    pb.redirectErrorStream(true);
    Process child = pb.start();

    然后就可以使用child.waitFor();等待结束后继续你的java其他业务逻辑

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?