当前位置: 首页 > 面试题库 >

使用Runtime.exec / ProcessBuilder.start以低优先级启动Java进程?

欧阳山
2023-03-14
问题内容

我正在尝试使用ProcessBuilder类通过Java启动外部过程,并且可以完成很多工作。当前正在使用以下命令运行:

new ProcessBuilder("java", "-jar", jarfile, args);

我只想这样做,但是要以低优先级开始该过程。我的程序当前仅在Windows上运行,因此我可以使用特定于窗口的解决方案。一些研究建议我使用“启动”命令,但是当我尝试从Java执行此操作时,它给出了一个例外,指出它是无法识别的命令(同一命令在cmd.exe中有效)。

有谁知道如何belownormal优先从Java(如果需要,特定于Windows)启动进程?


问题答案:

使用启动命令。它取决于Windows,但可以满足您的需求。我读过没有跨平台的方法。

ProcessBuilder pb = new ProcessBuilder("cmd", "/C start /B /belownormal javaws -version");
System.out.println("Before start");
Process start = pb.start();

甚至可以读取输入端错误流。

等待:

ProcessBuilder pb = new ProcessBuilder("cmd", "/C start /B /belownormal /WAIT javaws -sdasd");
System.out.println("Before start");
Process start = pb.start();
start.waitFor();
System.out.println("Done");

对于过早销毁:

ProcessBuilder pb = new ProcessBuilder("cmd", "/C start /B /belownormal /WAIT javaws -sdasd");
System.out.println("Before start");
Process start = pb.start();
start.destroy();
start.waitFor();

System.out.println("Done");


 类似资料:
  • 问题内容: 我希望能够从现有的Java应用程序启动Java服务器进程,并监视stdoutput和stderror并将该输出重定向到文件。是使用“ Runtime.exec”并像对待其他任何OS进程一样对待应用程序的最佳方法,还是有一些更适合新JVM的方法。 这是在Java 1.5上 问题答案: 而不是,您可能应该使用,尽管我不知道其他情况是否更适合您的情况(尤其是运行Java进程)。

  • Linux 是一个多用户、多任务的操作系统,系统中通常运行着非常多的进程。但是 CPU 在一个时钟周期内只能运算一条指令(现在的 CPU 采用了多线程、多核心技术,所以在一个时钟周期内可以运算多条指令。 但是同时运算的指令数也远远小于系统中的进程总数),那问题来了:谁应该先运算,谁应该后运算呢?这就需要由进程的优先级来决定了。 另外,CPU 在运算数据时,不是把一个集成算完成,再进行下一个进程的运

  • 我有两个SQS队列:一个用于低优先级,另一个用于高优先级消息。逻辑是不要接触低优先级队列上的消息,除非高优先级队列为空。 现在,我将这两条路由设置为同时使用队列中的消息。我想要的是,一个消息进入高优先级路由触发低优先级路由的停止。为了尝试获得此功能,我尝试使用一种路由策略,当在高优先级路由上启动新交换时,该策略将停止低优先级队列: (来自的片段) 然而,我不确定如何重新启动低优先级的消费者。骆驼提

  • 在安卓系统中:当系统内存不足时,Android系统将根据进程的优先级选择杀死一些不太重要的进程,优先级低的先杀死。进程优先级从高到低如下。 前台进程 处于正在与用户交互的activity 与前台activity绑定的service 调用了startForeground()方法的service 正在执行oncreate(),onstart(),ondestroy方法的 service。 进程中包含正

  • 主要内容:1 什么是Java 线程优先级,2 Thread类线程优先级常量,3 Java 线程优先级的例子1 什么是Java 线程优先级 每个线程都有一个优先级。优先级由1到10之间的数字表示。在大多数情况下,线程计划会根据线程的优先级来调度线程(称为抢先式调度)。但是不能保证一定被调用,因为是否被调用取决于JVM选择谁来调度。 2 Thread类线程优先级常量 public static int MIN_PRIORITY public static int NORM_PRIORITY publ

  • 根据优先表,一元后缀递增和递减运算符比关系运算符有更多的优先级,那么为什么在这样的表达式(x++>=10)中,关系运算符首先计算,然后变量递增呢?