當前位置:
首頁 > 最新 > 探秘Runtime、System等系統相關類

探秘Runtime、System等系統相關類

本文將介紹Java中的常見的系統相關類,如Runtime、System、Process、SecurityManager等類,同時也會介紹其關聯的一些包級私有的類,以及一些常見用法。

本文大綱:

1Runtime

2System

3Process

4SecurityManager

5、總結

一、Runtime類

每個Java應用程序都有一個Runtime類實例,使應用程序能夠與其運行的環境相連接。可以通過getRuntime()方法獲取當前運行時,應用程序不能創建自己的Runtime類實例。查看源碼可知Runtime類是單例的,如下所示:

從Runtime類實例中可以查看當前虛擬機中的空閑內存大小、總內存大小、可用內存大小,運行垃圾回收器方法、退回當前虛擬機,以及運行操作系統命令,載入動態庫等工作都是在此類完成。API如下圖所示:

下面介紹一下如何運行命令,執行其他程序,這部分在實際開發中可能會使用到,比如在程序中調用ORACLE中的sqlldr命令來批量導入數據。Runtime中執行其他程序的方法是exec方法,該方法返回一個Process對象,對於Process類會在下面的第三節中詳細介紹。

程序運行將列印ip地址信息。Runtime類中有一個有趣的方法,就是addShutdownHook(Thread hook)方法,可以允許虛擬機關閉前運行一個鉤子線程。

運行結果:

二、System類

類包含一些有用的類欄位和方法。它不能被實例化。在類提供的設施中,有標準輸入、標準輸出和錯誤輸出流;對外部定義的屬性和環境變數的訪問;載入文件和庫的方法;還有快速複製數組的一部分的實用方法。

下面程序通過System類來訪問操作系統的環境變數和系統屬性。

System類還有兩個獲取系統當前時間的方法:currentTimeMillis()和nanoTime(),它們都返回一個long型整數。實際上它們都返回當前時間與UTC1970年1月1日午夜的時間差,前者以毫秒做單位,後者以納秒為單位,但是必須指出的是,這兩個方法返回的時間粒度取決於底層操作系統,可能所在的操作系統根本不支持毫秒、納秒作為計時單位。

例如:許多操作系統以幾十毫秒為單位測量時間,currentTimeMillis()方法不可能返回精確的毫秒數;而nanoTime()方法很少用,因為大部分操作系統都不支持使用納秒作為計時單位。

除此之外,System類的in、out、err分別代表系統的標準輸入(通常是鍵盤)、標準輸出(通常是顯示器)和錯誤輸出流,並提供了setIn()、setOut()、setErr()方法來改變系統的標準輸入、標準輸出和標準錯誤輸出流。

三、Process類

Process類是一個抽象類,和ProcessBuilder.start()方法都可以創建一個本機進程,並返回子類的一個實例,該實例可用來控制進程並獲得相關信息。

類提供了執行從進程輸入、執行輸出到進程、等待進程完成、檢查進程的退出狀態以及銷毀(殺掉)進程的方法。

ProcessImpl是Process的實現類,但是這個實現類是包級私有的,並不屬於公開API的一部分,所以你在JDK幫助手冊中是看不到這個類的。看一下Process定義的抽象方法:

介紹一個案例,比如列印當前計算機系統所有運行的進程,如果在DOS窗口使用tasklist命令即可查看。看一下程序實現:

採用ProcessBuilder類創建進程的方式:

在實際開發中如果要執行Java以外的程序,比如一些系統的命令,資料庫的導入導出命令,文件複製命令等,可以考慮使用Process進程來完成。

四、SecurityManager類

安全管理器是一個允許應用程序實現安全策略的類。它允許應用程序在執行一個可能不安全或敏感的操作前確定該操作是什麼,以及是否是在允許執行該操作的安全上下文中執行它。當前的安全管理器由System類中的setSecurityManager方法設置。當前的安全管理器由getSecurityManager方法獲得。

SecurityManager類經常與訪問控制器(AccessController)一起使用,AccessController的核心方法有檢查許可權checkPermission()方法,執行授權doPrivileged()方法等。看一下安全管理器包檢查方法的實現:

五、總結

簡單總結一下,本文主要介紹了Java的系統相關類,比如常見的System、Runtime、Process等,以及安全管理器,安全管理器這部分只是簡單介紹,如果要研究的話,涉及很多許可權相關的類,訪問控制等,有興趣的可以去閱讀源碼。感謝您的閱讀,謝謝。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

青花瓷鑒定方法及價值

TAG:全球大搜羅 |