java.lang.Runtime
每一个java程序都有一个Runtime类的单一实例,可以通过getRuntime静态方法获得。程序通过它与程序的运行环境(也就是操作系统)相交互。
1.内存查看
int java.lang.Runtime. availableProcessors()jvm的可用处理器数量。
long java.lang.Runtime. totalMemory()
初始的总内存,单位为byte。
long java.lang.Runtime. maxMemory()
最大可用内存。
long java.lang.Runtime.freeMemory()
当前可用内存。
2.运行其他程序
Process java.lang.Runtime.exec(String command) throws IOException
在一个隔离的进程中执行command命令。
java.lang.Process
可通过ProcessBuilder.start()与Runtime.exec()方法得到Process实例。此类提供了很多方法,可从process中得到输入,也可以向process中输出;还可以等待进程结束并检查退出码;可以摧毁process。
InputStream java.lang.Process.getInputStream()
从Process的标准输出得到InputStream。函数内部通过管道实现。
int java.lang.Process.waitFor() throws InterruptedException
等待Process执行完毕,达到同步的效果。返回值为process的返回值。默认地,0表示正常退出。
public class SudoJava { public static void main(String[] args) throws IOException, InterruptedException { StringBuilder sb = new StringBuilder("sudo "); for (String str : args) sb.append(str).append(" "); //待执行的命令在子进程中执行。若没有执行完毕父进程结束,则子进程也要被销毁。 //若想保证进程执行完全,需要process.waitFor(); Process process=Runtime.getRuntime().exec(sb.toString()); process.waitFor(); } }
3.定时任务例子
4. 添加退出钩子
void java.lang.Runtime.addShutdownHook(Thread hook)
程序在退出时(正常退出、System.exit()、与 被操作系统强行终止等),hookThread得到触发。可以添加多个hookThread。