【Java SE】浅析 Runtime类
前言:
如果我们想要对 Java 有很深的了解
那么,我们对 JVM
一定要进行深入学习
在 JDK 中,有一个有一个非常强悍的、可以操作 JVM 的 类 —— Runtime类
概述:
每个 Java 应用程序 都有一个 Runtime 类实例,使 应用程序 能够与 其运行的环境 相 连接
可以通过 getRuntime 方法获取 当前运行时 Runtime 类实例
应用程序 不能创建 自己的 Runtime 类实例
原因如下:
那么,现在,本人来讲解下这个类的 API:
API:
方法 | 描述 |
---|---|
void addShutdownHook(Thread hook) | 注册一个新的 虚拟机 关机钩子 |
int availableProcessors() | 返回可用的java虚拟机的处理器数 |
Process exec(String command) | 在一个单独的进程中执行指定的字符串命令 |
Process exec(String[] cmdarray) | 在一个单独的进程中执行指定的命令和参数 |
Process exec(String[] cmdarray, String[] envp) | 在指定的环境中在一个单独的进程中执行指定的命令和参数 |
Process exec(String[] cmdarray, String[] envp, File dir) | 在指定的环境和工作目录的一个单独的过程中执行指定的命令和参数 |
Process exec(String command, String[] envp) | 在一个单独的进程与指定的环境中执行指定的字符串命令 |
Process exec(String command, String[] envp, File dir) | 在一个单独的进程中执行指定的字符串命令,并使用指定的环境和工作目录 |
void exit(int status) | 终止 当前正在运行的java虚拟机 |
long freeMemory() | 返回 空闲内存的 java虚拟机 |
void gc() | 运行垃圾收集方法 |
static Runtime getRuntime() | 返回与当前应用程序相关的java运行时对象 |
void halt(int status) | 强行终止 正在运行的java虚拟机 |
void load(String filename) | 加载由文件名参数指定的本地库 |
void loadLibrary(String libname) | 负载 libname参数指定的本地库 |
long maxMemory() | 返回 java虚拟机将使用的最大内存量 |
boolean removeShutdownHook(Thread hook) | 去注册一个以前注册的 虚拟机 关机钩子 |
void runFinalization() | 运行任何对象待定型的finalization方法 |
long totalMemory() | 返回在java虚拟机中的内存总量 |
void traceInstructions(boolean on) | 启用/禁用 指令的跟踪(可以理解为“开关”) |
void traceMethodCalls(boolean on) | 启用/禁用 方法调用的跟踪(可以理解为“开关”) |
那么,现在本人来展示下部分API的使用:
使用展示:
package edu.youzg.about_design_mode.core;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Timer;
import java.util.TimerTask;
public class Test {
public static void main(String[] args) throws ParseException {
//Runtime 采用单例模式的饿汉式
Runtime runtime = Runtime.getRuntime();
//runtime.exec("calc"); //打开计算器app
//runtime.exec("mspaint"); //打开画图app
//定时关机
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
try {
runtime.exec("shutdown -s -t 0");
} catch (IOException e) {
e.printStackTrace();
}
}
}, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2020-2-26 18:40:00")); //设置定时关机
}
}
至于 运行结果,本人就不展示了,同学们可以尝试下运行这段代码🤭