更新時間:2021-07-05 來源:黑馬程序員 瀏覽量:
Runtime run = Runtime.getRuntime();
由于Runtime類封裝了Java虛擬機(jī)進(jìn)程,因此,可以通過該類的實例對象來獲取當(dāng)前虛擬機(jī)的相關(guān)信息。接下來通過一個案例來演示Runtime類的使用,如文件1所示。文件1 Example12.java
public class Example12 {
public static void main(String[] args) {
Runtime rt = Runtime.getRuntime(); // 獲取Java程序關(guān)聯(lián)的運行時對象
System.out.println("處理器的個數(shù): "
+ rt.availableProcessors() + "個");
System.out.println("空閑內(nèi)存大小: "
+ rt.freeMemory() / 1024 / 1024 + "M");
System.out.println("最大可用內(nèi)存大小: "
+ rt.maxMemory() / 1024 / 1024 + "M");
}
}
運行結(jié)果如圖1所示。
圖1 運行結(jié)果
文件1中,通過“Runtime.getRuntime();”方法創(chuàng)建了一個Runtime的實例對象,并分別調(diào)用該對象的availableProcessors()方法、freeMemory()方法和maxMemory()方法,將當(dāng)前虛擬機(jī)的處理器個數(shù)、空閑內(nèi)存大小和可用最大內(nèi)存大小的信息打印出來。
需要注意的是,由于每臺計算機(jī)的配置和性能不同,該文件的打印結(jié)果也會有所不同。另外,空閑內(nèi)存大小和可用最大內(nèi)存大小都是以字節(jié)為單位計算的,文件1中程序的運行結(jié)果已經(jīng)換算成了以兆(M)為單位的值。
Runtime類中提供了一個exec()方法,該方法用于執(zhí)行一個DOS命令,從而實現(xiàn)和在命令行窗口中輸入DOS命令同樣的效果。例如,可以通過運行“notepad.exe”命令打開一個Windows自帶的記事本,程序代碼如文件2所示。
文件2 Example13.java
import java.io.IOException;
public class Example13 {
public static void main(String[] args) throws IOException {
Runtime rt = Runtime.getRuntime(); // 創(chuàng)建Runtime實例對象
rt.exec("notepad.exe"); // 調(diào)用exec()方法
}
}
文件2中,調(diào)用了Runtime對象的exec()方法,并將系統(tǒng)命令“notepad.exe”作為參數(shù)傳遞給方法。運行程序后會在桌面上打開一個記事本,如圖2所示。
圖2 記事本
此時,會在Windows系統(tǒng)中產(chǎn)生一個新的進(jìn)程notepad.exe,可以通過任務(wù)管理器進(jìn)行觀察,如圖3所示。
圖3 任務(wù)管理器
Runtime類的exec()方法會返回一個Process對象,該對象表示操作系統(tǒng)的一個進(jìn)程,此處為notepad.exe進(jìn)程,通過Process對象可以對產(chǎn)生的新進(jìn)程進(jìn)行管理,如關(guān)閉此進(jìn)程只需調(diào)用destroy()方法即可。
接下來通過一個案例來實現(xiàn)打開的記事本并在3秒后自動關(guān)閉的功能,如文件3所示。
文件3 Example14.java
public class Example14 {
public static void main(String[] args) throws Exception {
// 創(chuàng)建一個Runtime實例對象
Runtime rt = Runtime.getRuntime();
// 得到表示進(jìn)程的Process對象
Process process = rt.exec("notepad.exe");
// 程序休眠3秒
Thread.sleep(3000);
// 關(guān)閉進(jìn)程
process.destroy();
}
}
在文件3中,通過調(diào)用Process對象的destroy()方法,將打開的記事本關(guān)閉了。為了突出演示的效果,使用了Thread類的靜態(tài)方法sleep(long millis)使程序休眠了3秒,因此,程序運行后,會看到打開的記事本在3秒后自動關(guān)閉。