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月前
|
存储 调度
探索操作系统的心脏:内核与用户空间的交互
在数字世界的每一次呼吸中,操作系统扮演着至关重要的角色。本文将深入探讨操作系统的核心组件——内核与用户空间之间的神秘舞蹈。通过直观的比喻和生动的代码片段,我们将一窥这场幕后的交响曲,了解它们是如何协同工作以支持我们的计算需求的。从简单的文件读写到复杂的网络通信,每一个操作背后都隐藏着内核与用户空间之间精妙的互动。准备好跟随我们的脚步,一起揭开操作系统的神秘面纱。
30 3
|
2月前
|
Java Linux Android开发
移动应用开发与操作系统的交互:深入理解Android和iOS
在数字时代,移动应用成为我们日常生活的一部分。本文将深入探讨移动应用开发的核心概念、移动操作系统的工作原理以及它们如何相互作用。我们将通过实际代码示例,展示如何在Android和iOS平台上创建一个简单的“Hello World”应用,并解释其背后的技术原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和知识。
|
2月前
|
存储 传感器 API
移动应用开发中的操作系统交互与性能优化
本文将深入探讨移动应用开发中,开发者如何通过理解操作系统的工作原理和APIs来提升应用性能。我们将从基础的系统调用开始,逐步过渡到复杂的多线程管理和内存优化策略,最后讨论如何利用操作系统特性实现高效的数据存储和网络通信。文章旨在为开发者提供一系列实用的技巧和方法,帮助他们构建更快速、更稳定、更省电的移动应用。
39 1
|
3月前
|
安全 程序员 Linux
探索操作系统的心脏:内核与用户空间的交互之旅
【9月更文挑战第9天】本文是一次深入操作系统核心的探险,我们不仅会穿越神秘的内核世界和多彩的用户空间,还将揭秘它们之间如何通过系统调用、库函数、API等桥梁进行信息交换。这不仅是一段技术之旅,也是对操作系统设计哲学的思考。我们将用浅显的语言,逐步揭开操作系统的神秘面纱,让读者在轻松愉快的阅读中,获得对操作系统深层次理解的钥匙。
|
21天前
|
安全 Linux 开发者
探索操作系统的心脏:内核与用户空间的交互
在数字世界的每一次点击和命令背后,隐藏着一个复杂而精妙的操作系统世界。本文将带你走进这个世界的核心,揭示内核与用户空间的神秘交互。通过深入浅出的解释和直观的代码示例,我们将一起理解操作系统如何协调硬件资源,管理进程和内存,以及提供文件系统服务。无论你是编程新手还是资深开发者,这篇文章都将为你打开一扇通往操作系统深层原理的大门。让我们一起开始这段旅程,探索那些支撑我们日常数字生活的技术基石吧!
31 6
|
29天前
|
存储 调度 开发者
探索操作系统的心脏:内核与用户空间的交互之旅
在数字世界的无限广阔中,操作系统扮演着枢纽的角色,连接硬件与软件,支撑起整个计算生态。本篇文章将带领读者深入操作系统的核心——内核,揭示其与用户空间的神秘交互。我们将透过生动的例子和易于理解的比喻,深入浅出地探讨这一复杂主题,旨在为非专业读者揭开操作系统的神秘面纱,同时为有一定基础的读者提供更深层次的认识。从进程管理到内存分配,从文件系统到设备驱动,每一个环节都是精确而优雅的舞蹈,它们共同编织出稳定而高效的计算体验。让我们开始这场奇妙之旅,一探操作系统背后的科学与艺术。
29 5
|
1月前
|
安全 数据处理 调度
探索操作系统的心脏:内核与用户空间的交互之旅
操作系统,这个现代计算机体系的守门人,承载着软件与硬件间复杂而精妙的对话。本文将深入其核心,揭秘内核与用户空间之间如何协同工作,确保数据安全且高效地流动。我们将透过代码示例的镜头,观察这一过程的具体实现,同时反思在设计与使用操作系统时面临的挑战与机遇。
|
1月前
|
存储 安全 开发者
探索操作系统的心脏:内核与用户空间的交互
在数字世界的复杂迷宫中,操作系统扮演着至关重要的角色。它不仅仅是软件与硬件之间的桥梁,更是维系计算生态平衡的关键。本文将深入探讨操作系统的核心组件—内核和用户空间,以及它们如何协同工作来支持现代计算需求。通过浅显的语言和生动的比喻,我们将揭开操作系统神秘的面纱,了解它是如何影响我们日常生活的每一个方面。无论你是科技爱好者还是普通用户,这篇文章都将带你领略操作系统的奇妙世界,让你对电脑内部的运作有一个全新的认识。
|
1月前
|
算法 调度 C语言
探索操作系统的心脏:内核与用户空间的交互
【10月更文挑战第36天】本文将深入探讨操作系统的核心组件—内核,以及它如何与用户空间进行交互。我们将通过浅显易懂的语言和生动的例子来揭示这一复杂主题的面纱。文章不仅涉及理论知识,还会展示具体的代码示例,帮助读者更好地理解内核机制。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供新的视角和深入的理解。
|
22天前
|
C语言
探索操作系统的心脏:内核与用户空间的交互
本文将深入操作系统的核心,揭示其内部结构与运作原理。我们将通过浅显易懂的方式,探讨操作系统的两个主要组成部分:内核和用户空间。文章旨在帮助读者理解这两者之间的界限以及它们如何协同工作来管理计算机资源。我们还将介绍系统调用的概念,并展示一个简单的代码示例,以便读者更好地理解这一过程。