Runtime 与操作系统交互

简介: java.lang.Runtime 每一个java程序都有一个Runtime类的单一实例,可以通过getRuntime静态方法获得。程序通过它与程序的运行环境(也就是操作系统)相交互。 1.内存查看 int java.lang.Runtime.availableProcessors() jvm的可用处理器数量。 long java.lang.Runtime.totalMemory

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。


目录
相关文章
|
2月前
|
Java Linux Android开发
移动应用开发与操作系统的交互:深入理解Android和iOS
在数字时代,移动应用成为我们日常生活的一部分。本文将深入探讨移动应用开发的核心概念、移动操作系统的工作原理以及它们如何相互作用。我们将通过实际代码示例,展示如何在Android和iOS平台上创建一个简单的“Hello World”应用,并解释其背后的技术原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和知识。
|
2月前
|
存储 传感器 API
移动应用开发中的操作系统交互与性能优化
本文将深入探讨移动应用开发中,开发者如何通过理解操作系统的工作原理和APIs来提升应用性能。我们将从基础的系统调用开始,逐步过渡到复杂的多线程管理和内存优化策略,最后讨论如何利用操作系统特性实现高效的数据存储和网络通信。文章旨在为开发者提供一系列实用的技巧和方法,帮助他们构建更快速、更稳定、更省电的移动应用。
33 1
|
3月前
|
安全 程序员 Linux
探索操作系统的心脏:内核与用户空间的交互之旅
【9月更文挑战第9天】本文是一次深入操作系统核心的探险,我们不仅会穿越神秘的内核世界和多彩的用户空间,还将揭秘它们之间如何通过系统调用、库函数、API等桥梁进行信息交换。这不仅是一段技术之旅,也是对操作系统设计哲学的思考。我们将用浅显的语言,逐步揭开操作系统的神秘面纱,让读者在轻松愉快的阅读中,获得对操作系统深层次理解的钥匙。
|
25天前
|
算法 调度 C语言
探索操作系统的心脏:内核与用户空间的交互
【10月更文挑战第36天】本文将深入探讨操作系统的核心组件—内核,以及它如何与用户空间进行交互。我们将通过浅显易懂的语言和生动的例子来揭示这一复杂主题的面纱。文章不仅涉及理论知识,还会展示具体的代码示例,帮助读者更好地理解内核机制。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供新的视角和深入的理解。
|
3月前
|
物联网 调度 云计算
探索操作系统的心脏:内核与用户空间的交互之旅
【9月更文挑战第10天】在数字世界的海洋中,操作系统扮演着船舶的角色,而它的内核则是这艘船的发动机。本文将揭开操作系统内核的神秘面纱,通过浅显的语言和实际代码示例,带领读者理解内核与用户空间之间的交互机制。我们将从基础概念出发,逐步深入到系统调用、进程管理等核心话题,最后探讨内核在现代计算环境中的作用和面临的挑战。无论你是编程新手还是资深开发者,这篇文章都将为你提供新的视角和深刻的洞见。
|
3月前
|
安全 API 调度
探索操作系统的心脏:内核与用户空间的交互
【9月更文挑战第18天】在数字世界的海洋中,操作系统扮演着至关重要的角色。它不仅是软件与硬件之间的桥梁,更是维护整个计算生态平衡的守护者。本文将深入探讨操作系统的核心组件——内核,以及它如何与用户空间进行交互,确保系统的稳定运行和资源的合理分配。通过简化的比喻和生动的实例,我们将一探究竟,看看这个不为人知的幕后英雄是如何默默支撑起我们的数字生活的。
|
3月前
|
安全
探索操作系统的心脏:内核与用户模式的交互之旅
【9月更文挑战第12天】在数字世界的海洋中,操作系统扮演着灯塔的角色,指引着每一条数据流的方向。本文将深入探讨操作系统的核心机制——内核与用户模式,揭示它们如何协同工作以保障计算机系统的高效与安全。我们将从基础概念出发,逐步深入到实际代码示例,旨在为读者呈现一幅清晰的操作系统工作原理图景。
|
4月前
|
安全 编译器 Shell
探索操作系统的心脏:内核与用户空间的交互
【8月更文挑战第28天】在计算机的世界中,操作系统扮演着至关重要的角色,它如同一个繁忙的交通枢纽,协调着硬件和软件之间的复杂交互。本文将深入探讨操作系统的核心组成部分——内核,以及它是如何与用户空间进行通信的。我们将通过一个简单的命令行工具示例,来揭示这一过程的内在机制,让你对计算机工作原理的理解更上一层楼。准备好了吗?让我们开始这段奇妙的旅程吧!
38 3
|
4月前
|
安全 API 调度
探索操作系统的心脏:内核与用户空间的交互
【8月更文挑战第29天】在计算机科学领域,操作系统是连接硬件和用户的桥梁。本文将深入探讨操作系统的核心—内核,及其如何与用户空间进行交互,确保系统稳定运行。通过分析内核的设计原则、功能以及与用户空间的通信机制,我们将揭示操作系统背后复杂的工作机制,并展示如何通过编程接口与内核交互,以实现高效的系统管理和应用开发。
|
4月前
|
Kubernetes Cloud Native 安全
探索操作系统的心脏:内核与用户空间的交互云原生之旅:Kubernetes 的弹性魔法
【8月更文挑战第27天】在数字世界的海洋中,操作系统是那艘承载着无数数据与应用的巨轮。本文将带你潜入这艘巨轮的机舱——内核,揭示它如何与甲板上的用户空间互动。通过浅显的语言和生动的比喻,我们一同解锁操作系统的秘密,从内核的设计哲学到用户空间的应用实现,再到二者间的数据传递机制,逐步揭开这一神秘面纱。让我们开始这场深入浅出的技术之旅,一探操作系统背后的奥秘。