Java笔记十三.常用API-Runtime、Runable、System类

常用API-Runtime、Runable、System类

转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空)

一、Runtime类

1.概述:Runtime类封装了Java命令本身的运行进程,即每个Java应用程序都会拥有一个Runtime类对象,当应用程序运行时,允许其通过这个对象与运行环境进行交互,但需要注意的是应用程序本身不能为自己创建Runtime类对象。Runtime类的许多方法与System中的方法想重复,我们不能直接创建Runtime实例,但可以通过静态方法Runtime.getRuntime获得正在运行Runtime对象的引用Exec方法:Java命令运行后,本身是多任务操作系统上的一个进程,在这个进程中启动一个新的进程,即执行其他程序时使用exce方法。exec方法返回一个代表子进程的Process类对象,通过这个对象,Java进程可以与子进程交互
2.API介绍
(1)继承关系
    java.lang.Object  < ----  java.lang.Runtime
(2)返回当前应用的Runtime对象
    Runtime runtime=Runtime.getRuntime() ;
(3)重要方法
Process exec(String command):在一个单独进程中执行指定的字符串命令
Process exec(String[] cmdarray, String[] envp):在一个单独进程中基于指定的环境执行指定命令及参数
void gc():启动垃圾回收箱
static Runtime getRuntime() :返回当前Java应用程序的Runtime对象
void halt(int status) :强制性终止当前运行的Java虚拟机
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
3.Runtime应用开发
(1)在当前进程中启动一个新的子进程
    首先,我们通过Runtime.getRuntime()方法获取当前应用程序的Runtime类对象;然后,通过该对象调用exce方法来启动一个新的子进程,并通过返回的Process对象实现Java程序与子进程的交互。
Runtime run=Runtime.getRuntime();                    //返回当前应用程序的Runtime对象 
Process p=run.exec("notepad.exe"); //在当前进程中启动一个新的进程(打开记事本)
(2)实例源码
<span style="font-size:14px;">/*实现:运行应用程序后启动一个子进程:用Windows的记事本打开RuntimeTest.java这个源程序
 * 并在5秒中后销毁该子进程,记事本程序被关掉*/
public class RuntimeTest {
 public static void main(String[] args)
 {
  Process p=null;
  try{
   Runtime run=Runtime.getRuntime();//返回当前应用程序的Runtime对象
   p=run.exec("notepad.exe");	 //在当前进程中启动一个新的进程
   Thread.sleep(5000);
  }
  catch(Exception e)
  {
   System.out.println(e.getMessage());
  }
  p.destroy();
 }
 
}</span>


二、Runnable接口
1.概述:Runnable接口主要是用于提供在处于活动中的对象执行指定代码的一种通用协议,例如,Runable接口可以被Thread继承,所谓的处于活动状态是指这个线程已经开发运行并且还没有结束。Runnable接口可以被任何类继承,这些类的实例将会在线程中被执行并且在这些类中需要实现一个无参数的run方法,而无需继承Thread。
2.重要方法
void run()
    当一个对象继承Runnable接口被用来创建一个线程时,启动该线程将会在该单独指定中的线程中调用对象的run方法
三、System接口
1.概述: Java不支持全局函数和变量,Java设计者将一些系统相关的重要方法和变量收集到了一个同意的类中,这就是Systemt类。System类不能被实例化,Syetem类中的所有成员都是静态,当我们要引用这些变量和方法时,直接使用System类名作前缀。Systemt类主要提供的功能有:标准输入流、标准输出流、标准错误输出流;环境变量;加载文件和库; 快速复制数组的一部分等。
2.重要方法:
static PrintStream err :标准错误输出流
static InputStream in :标准输入流
static PrintStream out :标准输出流
static void exit(int status):提前终止虚拟机的运行。对于发生了异常情况而项终止虚拟机的运行,传递一个非零值作为参数。对于在用户正常操作下,终止虚拟机的运行,传递零值作为参数;
static long CurrentTimeMillis()返回自1970年1月1日0点0分0秒起至今的以毫秒为单位的时间,这是一个long类型的大数值。
static Properties getProperties()获取当前虚拟机的环境属性。类似于Windows的环境属性,其中path和classpath就是两个环境变量,每一个属性都是变量与值成对的形式出现。同样的道理,Java作为一个虚拟的操作系统,它也有自己的环境属性,Properties是Hashtable的子类,正好可以用于存储环境属性中多个变量/值对格式的数据。getProperties方法返回值是包含了当前虚拟机的所有环境属性的Properties类型的对象。
static String setProperty(String key, String value):设置新的环境变量
static void load(String filename):加载一个本地文件
3.System应用开发技巧
(1)计算一段程序代码运行时所花费的时间
    Long  startTime=System.currentTimeMillis();
    ......//代码段
    Long endTime=System.currentTimeMillis();//其中Long为数据类型类, endTime为对象而非长整型变量
    System.out.println("total time expended is" + (starttime-endTime)+"milliseconds");
(2)实例源码
<span style="font-size:14px;">import java.util.Enumeration;
import java.util.Properties;
/*实现:获取Java虚拟机中所有环境变量*/
public class SystemInfo {
 public static void main(String[] args)
 {
  Properties p=System.getProperties();	//返回一个Properties实例对象
  Enumeration e=p.propertyNames();	 //返回Properties所有的键对象到Enumeration对象
  while(e.hasMoreElements())	 //检查Enumeration对象中所有元素是否遍历完
  {
   String key=(String) e.nextElement();	 //遍历属性列表中的每一个对象
   System.out.println(key+"="+p.getProperty(key));//打印属性列表中一个元素的键对象值及其对应的值对象的值
  }
 }
}</span>


效果如下:
Java笔记十三.常用API-Runtime、Runable、System类_第1张图片

参考:http://docs.oracle.com/javase/8/docs/api/index.html

你可能感兴趣的:(java)