如何为多线程程序设置环境变量?

时间:2013-09-18 01:45:17

标签: java multithreading environment-variables

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

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

我的问题是:

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

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

2 个答案:

答案 0 :(得分:2)

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

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

从上面链接中取出的一条(必须完整阅读链接,其知识非常丰富):


  

显示变量及其值

要列出所有变量及其值,请启动CMD shell(单击"开始"按钮⇒运行⇒输入" cmd")并发出命令" set&# 34 ;.要显示特定变量,请使用命令" 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

通过" set"设置的变量。 CMD下的命令是一个局部变量,仅适用于当前的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");

答案 1 :(得分:1)

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

在Windows 7中,您可以在命令提示符中使用setx命令来设置用户环境变量。 e.g:

setx myvariablename myvariablevalue

或者你可以通过GUI完成:

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