1

我想运行一个并行的 Java 线程程序并利用多处理器执行。但是我需要设置环境变量,以启用多线程环境。我知道您可以通过发出 setenv PARALLEL 4 或 setenv OMP_NUM_THREADS 4 (对于 OpenMP 程序)来设置环境。

如果您有 4 个处理器,这应该使 4 个处理器同时运行。

我的问题是:

  1. 你在哪里发出上述命令(SETENV),你是怎么做的?

在 java 中,您可以调用System.getenv("NUM_THREADS")以获取NUM_THREADS. 但是,没有明确的方法来设置环境。我正在运行 AMD-x64 机器:操作系统:Windows 8,处理器:AMD E-300 APU 双核处理器,内存:4.00GB,系统类型:64 位操作系统。

4

2 回答 2

2

以下是解释如何在 Windows 机器中手动设置环境变量的链接:

http://www3.ntu.edu.sg/home/ehchua/programming/howto/Environment_Variables.html

摘自上述链接的一段(必须完整阅读链接,知识非常丰富):


显示变量及其值

要列出所有变量及其值,请启动 CMD shell(单击“开始”按钮 ⇒ 运行 ⇒ 输入“cmd”)并发出命令“set”。要显示特定变量,请使用命令“set varname”。举些例子,

// Display all the variables (in NAME=VALUE pairs)
prompt> set
COMPUTERNAME=xxxxxxx
OS=xxxxxxx
PATH=xxxxxxx
.......

// Display a particular variable
prompt> set COMPUTERNAME
COMPUTERNAME=xxxxxx
// OR use echo command with variable enclosed within a pair of '%'s
prompt> echo %COMPUTERNAME%
COMPUTERNAME=xxxxxx

尝试在您的系统上发出 set 命令,并研究列出的环境变量。请特别注意名为 PATH 的变量。

设置/更改/取消设置变量

要设置(或更改)变量,请使用命令“set varname=value”。'=' 符号前后不得有空格。要取消设置环境变量,请使用“set varname=”,即,将其设置为空字符串。

prompt> set varname
prompt> set varname=value
prompt> set varname=
prompt> set

显示变量的值

设置或更改变量的值(注意:'=' 前后无空格) 通过设置为空字符串删除变量(注意:'=' 后无任何内容) 显示所有环境变量。举些例子,

// Set an environment variable
prompt> set MY_VAR=hello

// Display
prompt> set MY_VAR
MY_VAR=hello

// Unset an environment variable
prompt> set MY_VAR=

// Display
prompt> set MY_VAR
Environment variable MY_VAR not defined

通过 CMD 下的“set”命令设置的变量是局部变量,仅对当前 CMD 会话可用。


如果您想使用 Java 代码进行设置,下面是一个示例:

public static void main(String[] args) throws IOException {

ProcessBuilder pb = new ProcessBuilder("CMD", "/C", "SET");
Map<String, String> env = pb.environment();
env.put("MYVAR", "myValue");
Process p = pb.start();
InputStreamReader isr = new InputStreamReader(p.getInputStream());
char[] buf = new char[1024];
while (!isr.ready()) {
    ;
}
while (isr.read(buf) != -1) {
    System.out.println(buf);
 }
}

如果您想将一些值传递给您的程序,您也可以在命令行中执行此操作:

java -DMyVar=varValue <main program>

这个值可以读作:

String myVar= System.getProperty("MyVar");
于 2013-09-18T02:22:08.813 回答
1

我相信 setenv 是 linux/unix 的命令。

在 Windows 7 中,您可以在命令提示符下使用 setx 命令设置用户环境变量。例如:

setx myvariablename myvariablevalue

或者您可以通过 GUI 执行此操作:

右键单击我的电脑 -> 属性 -> 高级 -> 环境变量

于 2013-09-18T02:19:36.880 回答