java程序在不同的操作系统上运行时,可能需要获取平台相关的属性,或者调用平台命令来完成特定的功能。java提供了System类和Runtime类来与程序的运行平台进行交互。
1.System类代表当前java程序的运行平台,程序不能创建System类的对象,System类提供一些常用的类变量和类方法,允许直接通过System类来与程序的运行平台进行交互。system类提供了代表标准输入输出和错误输出的类变量,并提供了一些静态方法用于访问环境变量、系统属性的方法,还提供了加载文件和动态链接库的方法。加载文件和动态连接库主要对native方法有用。System类还提供了通知系统进行垃圾回收的gc()方法和runFinalization(),System类还有两个获取系统当前时间的方法currentTimeMillis()-获取系统时间以毫秒为单位,nanoTime()-以纳秒为单位。System类的in、out、err分别提供了系统的标准的输入、标准的输出、错误输出流。
2.Runtime类代表java程序的运行的环境,每个java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,但可以通过getRuntime()方法获取与之相关联的Runtime对象。Runtime类也提供了gc()方法和runFinalization()方法来通知系统进行垃圾回收,清理系统资源,并提供load(String filename)和loadLibrary(String libname)方法来加载文件和动态资源连。Runtime类代表Java程序的运行时环境,可以访问JVM的相关信息,如处理器数量、内存信息。Runtime的另一个功能,他可以直接启动一个进程来运行操作系统的命令。
package com.lanou.test;
public class Demo05 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Runtime rt=Runtime.getRuntime();
System.out.println("处理器个数:"+rt.availableProcessors());
System.out.println("空闲内存数:"+rt.freeMemory());
System.out.println("总内存数:"+rt.totalMemory());
System.out.println("可用最大内存数:"+rt.maxMemory());
}
}
package com.lanou.test;
public class Demo06 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Runtime rt=Runtime.getRuntime();
rt.exec("notepad.exe");
}
}