Java進程和操作系統進程有什么關系?
Java進程在實現上就是創建了操作系統的一個進程,也就是每個JVM中創建的進程都對應了操作系統中的一個進程。但是,Java為了給用戶更好的更方便的使用,向用戶屏蔽了一些與平臺相關的信息。
在使用C / C ++創建系統進程的時候,是可以進行的PID值的,可以直接通過該PID去操作相應進程。但是在JAVA中,用戶只能通過實例的引用去進行操作,當該引用丟失或無法獲得的時候,就無法了解任何該進展的信息。
Java進程在使用的時候還有些要注意的事情:
Java提供的輸入輸出的管道容量是十分有限的,如果不及時讀取會導致進程掛起甚至引起死鎖。當創建進程去執行Windows下的系統命令時,如:dir,copy等。需要運行Windows的命令解釋器,command.exe / cmd.exe,這依賴于Windows的版本,這樣才可以運行系統的命令。對于Shell中的管道'| '命令,各平臺下的重組命令符'>,都無法通過命令參數直接轉換進行實現,而需要在Java代碼中做一些處理,如定義新的流來存儲標準輸出,等等問題。