Runtime类理解

虽然我们知道在编写java程序时,只有线程的概念,依托于JVM这个进程,但是API提供了Runtime这个类,(Every Java application has a single instance of class Runtime that allows the application to interface with the environment in which the application is running. The
current runtime can be obtained from the getRuntime method.An application cannot create its own instance of this class.)使得出现了子进程,通过getRuntime.exec()可以用来执行shell脚本。原理就是:会从当前虚拟机进程fork一个子进程,然后用新的进程执行命令,而后退出。所以当太多这种场景的时候会出现大量进程,会成为问题,所以能用java API完成的就不要使用这种方式。理解:子进程当然有管道的概念,所以明确了这一点,就可以从中得到InputStream/OutputStream进行一些有用操作。

下面是一个简单的示例:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

//Executes the specified string command in a separate process.
public class TestRuntime {
	public static void main(String[] args) throws IOException {
		Runtime r = Runtime.getRuntime();
		Process p = r.exec("man ls");
		System.out.println(p.isAlive());
		BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
		String res ;
		while((res = br.readLine()) != null){
			System.out.println(res);
		}
	}
}

结果:

时间: 2024-07-31 23:00:02

Runtime类理解的相关文章

iOS runtime探究(一): 从runtime开始理解面向对象的类到面向过程的结构体

你要知道的runtime都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/67639205 本文主要讲解runtime相关知识,从原理到实践,由于包含内容过多分为以下五篇文章详细讲解,可自行选择需要了解的方向: 从runtime开始: 理解面向对象的类到面向过程的结构体 从runtime开始: 深入理解OC消息转发机制 从runtime开始: 理解OC的属性property 从runtime开始: 实践Category添加属

谈谈Runtime类中的freeMemory,totalMemory,maxMemory等几个方法

谈谈Runtime类中的freeMemory,totalMemory,maxMemory等几个方法 Java虚拟机threadJVM 最近在网上看到一些人讨论到java.lang.Runtime类中的freeMemory(),totalMemory(),maxMemory ()这几个方法的一些问题,很多人感到很疑惑,为什么,在java程序刚刚启动起来的时候freeMemory()这个方法返回的只有一两兆字节,而随着 java程序往前运行,创建了不少的对象,freeMemory()这个方法的返回有

iOS runtime探究(三): 从runtime开始理解OC的属性property

你要知道的runtime都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/67639303 本文主要讲解runtime相关知识,从原理到实践,由于包含内容过多分为以下五篇文章详细讲解,可自行选择需要了解的方向: 从runtime开始: 理解面向对象的类到面向过程的结构体 从runtime开始: 深入理解OC消息转发机制 从runtime开始: 理解OC的属性property 从runtime开始: 实践Category添加属

转发 深入研究java.lang.Runtime类

转发 深入研究java.lang.Runtime类 前言:Java的类库日益庞大,所包含的类和接口也不计其数.但其中有一些非常重要的类和接口,是Java类库中的核心部分.常见的有String.Object.Class.Collection.ClassLoader.Runtime.Process...,熟悉这些类是学好Java的基础.而这些类一般不容易理解,需要做深入的研究和实践才能掌握.下面是我对这些类理解和使用的一些总结.欢迎你在阅读后将你宝贵的意见和读后感留下! 一.概述      Runt

Java中RunTime类介绍

Runtime 类代表着Java程序的运行时环境,每个Java程序都有一个Runtime实例,该类会被自动创建,我们可以通过Runtime.getRuntime() 方法来获取当前程序的Runtime实例. 获取当前Jvm的内存信息 /* * 获取当前jvm的内存信息,返回的值是 字节为单位 * */ public static void getFreeMemory() { //获取可用内存 long value = Runtime.getRuntime().freeMemory(); Syst

深入研究java.lang.Runtime类

深入研究java.lang.Runtime类 一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用.      一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为.

JAVA API(二)System类与Runtime类

1.System类与Runtime类 1.1System类 System类对我们来说并不陌生,在之前学习的知识中,当我们需要打印结果时,使用的都是"System.out.println()"语句进行打印输出,这句代码中就使用了System类.这个类中定义了与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类调用即可.下表是System类常用的一些方法. 方法声明 功能描述 static void exit(int status)

浅析Java.lang.Runtime类

一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用.      一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为.       当Applet和其他不被信任的代

Runtime类

Runtime类也在java.lang包中,这个类没有提供构造器,但是提供的却非静态方法,而是在方法中提供了一个静态方法来返回当前进程的Runtime实例,采用的单例设计模式. 其作用:可以对当前java程序进程进行操作.打开本机程序.获取虚拟机信息等. 举例:打开一个windows程序 import java.lang.*; import java.util.*; import java.io.*; class Test { public static void main(String[] a