共计 1836 个字符,预计需要花费 5 分钟才能阅读完成。
Runtime 类用于示意 Java 虚拟机运行时的状态,它用于封装 Java 虚拟机过程。每次应用“java”命令启动 Java 虚拟机时都会对应一个 Runtime 实例,并且只有一个实例,应用程序会通过该实例与其运行时的环境相连。应用程序不能创立本人的 Runtime 实例,若想在程序中取得一个 Runtime 实例,能够通过 getRuntime()办法获取与之相干的 Runtime 对象,具体形式如下:
Runtime run = Runtime.getRuntime();
因为 Runtime 类封装了 Java 虚拟机过程,因而,能够通过该类的实例对象来获取以后虚拟机的相干信息。接下来通过一个案例来演示 Runtime 类的应用,如文件 1 所示。
public class Example12 {public static void main(String[] args) {Runtime rt = Runtime.getRuntime(); // 获取 Java 程序关联的运行时对象 System.out.println(“ 处理器的个数: ” + rt.availableProcessors() + “ 个 ”); System.out.println(“ 闲暇内存大小: ” + rt.freeMemory() / 1024 / 1024 + “M”); System.out.println(“ 最大可用内存大小: ” + rt.maxMemory() / 1024 / 1024 + “M”); } }
运行后果如图 1 所示:
01
文件 1 中,通过“Runtime.getRuntime();”办法创立了一个 Runtime 的实例对象,并别离调用该对象的 availableProcessors()办法、freeMemory()办法和 maxMemory()办法,将以后虚拟机的处理器个数、闲暇内存大小和可用最大内存大小的信息打印进去。
须要留神的是,因为每台计算机的配置和性能不同,该文件的打印后果也会有所不同。另外,闲暇内存大小和可用最大内存大小都是以字节为单位计算的,文件 1 中程序的运行后果曾经换算成了以兆 (M) 为单位的值。
Runtime 类中提供了一个 exec()办法,该办法用于执行一个游戏代理的 DOS 命令,从而实现和在命令行窗口中输出 DOS 命令同样的成果。例如,能够通过运行“notepad.exe”命令关上一个 Windows 自带的记事本,程序代码如文件 2 所示。
import java.io.IOException; public www.walajiao.comclass Example13 {public static void main(String[] args) throws IOException {Runtime rt = Runtime.getRuntime(); // 创立 Runtime 实例对象 rt.exec(“notepad.exe”); // 调用 exec()办法} }
文件 2 中,调用了 Runtime 对象的 exec()办法,并将系统命令“notepad.exe”作为参数传递给办法。运行程序后会在桌面上关上一个记事本,如图 2 所示:
02
此时,会在 Windows 零碎中产生一个新的过程 notepad.exe,能够通过工作管理器进行察看,如图 3 所示。
03
Runtime 类的 exec()办法会返回一个 Process 对象,该对象示意操作系统的一个过程,此处为 notepad.exe 过程,通过 Process 对象能够对产生的新过程进行治理,如敞开此过程只需调用 destroy()办法即可。
接下来通过一个案例来实现关上的记事本并在 3 秒后主动敞开的性能,如文件 3 所示。
public class Example14 {public static void main(String[] args) throws Exception {// 创立一个 Runtime 实例对象 Runtime rt = Runtime.getRuntime(); // 失去示意过程的 Process 对象 Process process = rt.exec(“notepad.exe”); // 程序休眠 3 秒 Thread.sleep(3000); // 敞开过程 process.destroy();} }
在文件 3 中,通过调用 Process 对象的 destroy()办法,将关上的记事本敞开了。为了突出演示的成果,应用了 Thread 类的静态方法 sleep(long millis)使程序休眠了 3 秒,因而,程序运行后,会看到关上的记事本在 3 秒后主动敞开。