结论:一个java程序创建多个线程共享一个系统环境
测试代码:
//App.java
import java.util.Map;
import java.util.Iterator;
import java.io.BufferedInputStream;
public class App
{
public static void main( String[] args ) throws Exception
{
//System.getProperties().list(System.out);
//System.getenv().list(System.out);
//输出1
Map<String, String> map = System.getenv();
for(Iterator<String> itr = map.keySet().iterator();itr.hasNext();){
String key = itr.next();
System.out.println(key + "=" + map.get(key));
}
//输出2
Process process = Runtime.getRuntime().exec("cmd /C set path");
BufferedInputStream bis = new BufferedInputStream(process.getInputStream());
byte[] data = new byte[1024];
int len;
while ((len = bis.read(data, 0, data.length)) != -1)
{
System.out.println(new String(data));
}
System.out.println("over");
}
}
//bat1.bat(批处理命令)
set path=%path%;f:\\tesssssssssssssssss
java App
PAUSE
说明:
1.先编译App.java程序,再运行bat1.bat(两个文件需要在同一目录下)
2.Runtime.getRuntime().exec(cmd) 为创建一个新的进程,对比输出1和输出2中输出的Path值,两者一样,得出结论多进程中的系统环境会继承(大概是继承自最初的bat1程序创建的系统环境)
输出结果:
(上面是其他系统信息)
Path=(这里是你的电脑上的Path环境变量值,我就不贴自己的了);f:\\tesssssssssssssssss
(其他系统信息)
----------------------------
Path=(这里是你的电脑上的Path环境变量值,我就不贴自己的了);f:\\tesssssssssssssssss