轉:Runtime

##0預備知識

Runtime類是一個與JVM運行時環境有關的Singleton類,有以下幾個值得注意的地方:

0.1 Runtime.getRuntime()可以取得當前JVM的運行時環境,這也是在Java中唯一得到運行時環境的方法。

0.2 Runtime上其他大部分的方法都是實例方法,也就是說每次進行運行時調用時都要用到getRuntime

方法。

0.3 Runtime中的exit方法是退出當前JVM的方法,估計也是唯一的。System類中的exit實際上也是通過調用Runtime.exit()來退出JVM的。

Java對Runtime返回值的一般規則,0代表正常退出,非0代表異常中止,這只是Java的規則,在各個操作系統中總會發生一些小的混淆。

0.4 Runtime.addShutdownHook()方法可以注冊一個hook在JVM執行shutdown的過程中,方法的參數只要是一個初始化過但是沒有執行的Thread實例就可以。(注意,Java中的Thread都是執行過了就不值錢的哦)

0.5說到addShutdownHook這個方法就要說一下JVM運行環境是在什么情況下shutdown或者abort的。

Shutdown:當最后一個非精靈進程退出或者收到了一個用戶中斷信號、用戶登出、系統shutdown、Runtime的exit方法被調用時JVM會啟動shutdown的過程,在這個過程開始后,他會并行啟動所有登記的shutdown hook(注意是并行啟動,這就需要線程安全和防止死鎖)。當shutdown過程啟動后,只有通過調用halt方法才能中止shutdown的過程并退出JVM。

Abort: abort退出時JVM就是停止運行但并不一定進行shutdown。這只有JVM在遇到SIGKILL信號或者windows中止進程的信號、本地方法發生類似于訪問非法地址一類的內部錯誤時會出現。這種情況下并不能保證shutdown hook是否被執行。

0.6 Runtime.exec()方法的所有重載。這里要注意的是:

public Process exec(String[] cmdarray, String[] envp, File dir);

這個方法中cmdArray是一個執行的命令和參數的字符串數組,數組的第一個元素是要執行的命令往后依次都是命令的參數,envp中是name=value形式的環境變量設置,如果子進程要繼承當前進程的環境時是null。

'啟動線程池時候調用 線程數量為CPU的數量'

ExecutorService mExecutorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());

http://jiangshuiy.iteye.com/blog/1674235

http://outofmemory.cn/code-snippet/2253/java-usage-Runtime-availableProcessors-get-keyong-chuliqi-geshu

要顯示java虛擬機可用的處理器個數,可以通過Runtime類的availableProcessors()方法得到。

要獲得Runtime類的實例,需要調用其靜態方法getRuntime(),如下例所示:

/**

* Main.java

*

*@authoroutofmemory.cn

*/

publicclassMain{

/**

* Displays the number of processors available in the Java Virtual Machine

*/

'publicvoiddisplayAvailableProcessors(){'

''Runtimeruntime=Runtime.getRuntime();''

"intnrOfProcessors=runtime.availableProcessors();"

System.out.println("Number of processors available to the Java Virtual Machine: "+nrOfProcessors);

}'

/**

* Starts the program

*@paramargs the command line arguments

*/

publicstaticvoidmain(String[]args){

newMain().displayAvailableProcessors();

}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、交換兩個方法的實現,攔截系統自帶的方法調用功能 需要用到的方法 <objc/runtime.h>獲得某個類的類...
    為零sowill閱讀 333評論 0 0
  • 一,如何正確的關閉游戲服務器 1,最簡單粗爆的方法 在Linux系統上,使用ps -aux|grep java可以...
    王廣帥閱讀 1,537評論 0 2
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • 2017年7月9日 一、閱讀《瓦爾登湖和梭羅的生態思想解讀》陳政武 1、根據南開大學學者常耀新教授的研究,梭羅是美...
    123逍遙游閱讀 373評論 0 1
  • 最近把腳扭傷了,兩只腳裸都受傷了,沒有很嚴重,先生出差了,我在姑姐家里住!就有了和阿姨聊天的故事! 阿姨說,人生真...
    易槿槿閱讀 142評論 0 0