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。


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