传智播客——系统相关类:Runtime,System

本文详细介绍了Java中的Runtime和System两个核心系统类。Runtime类提供了应用程序与其运行环境交互的方法,如执行外部进程、垃圾回收等。System类则封装了与系统相关的属性和控制方法,包括时间获取、内存清理及数组复制等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:java的二个重要的系统类

    Runtime,System。

二:Runtime细节

    Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。

    1:Runtime类的设计模式:单态

      实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,

 

 voidaddShutdownHook(Thread hook)
          注册新的虚拟机来关闭钩子。
 intavailableProcessors()
          向 Java 虚拟机返回可用处理器的数目。
 Processexec(String command)
          在单独的进程中执行指定的字符串命令。
 Processexec(String[] cmdarray)
          在单独的进程中执行指定命令和变量。
 Processexec(String[] cmdarray, String[] envp)
          在指定环境的独立进程中执行指定命令和变量。
 Processexec(String[] cmdarray, String[] envp, File dir)
          在指定环境和工作目录的独立进程中执行指定的命令和变量。
 Processexec(String command, String[] envp)
          在指定环境的单独进程中执行指定的字符串命令。
 Processexec(String command, String[] envp, File dir)
          在有指定环境和工作目录的独立进程中执行指定的字符串命令。
 voidexit(int status)
          通过启动虚拟机的关闭序列,终止当前正在运行的 Java 虚拟机。
 longfreeMemory()
          返回 Java 虚拟机中的空闲内存量。
 voidgc()
          运行垃圾回收器。
 InputStreamgetLocalizedInputStream(InputStream in)
          已过时。 从 JDK 1.1 开始,将本地编码字节流转换为 Unicode 字符流的首选方法是使用 InputStreamReaderBufferedReader 类。
 OutputStreamgetLocalizedOutputStream(OutputStream out)
          已过时。 从 JDK 1.1 开始,将 Unicode 字符流转换为本地编码字节流的首选方法是使用 OutputStreamWriterBufferedWriterPrintWriter 类。
static RuntimegetRuntime()
          返回与当前 Java 应用程序相关的运行时对象。
 voidhalt(int status)
          强行终止目前正在运行的 Java 虚拟机。
 voidload(String filename)
          加载作为动态库的指定文件名。
 voidloadLibrary(String libname)
          加载具有指定库名的动态库。
 longmaxMemory()
          返回 Java 虚拟机试图使用的最大内存量。
 booleanremoveShutdownHook(Thread hook)
          取消注册某个先前已注册的虚拟机关闭钩子。
 voidrunFinalization()
          运行挂起 finalization 的所有对象的终止方法。
static voidrunFinalizersOnExit(boolean value)
          已过时。 此方法本身具有不安全性。它可能对正在使用的对象调用终结方法,而其他线程正在操作这些对象,从而导致不正确的行为或死锁。
 longtotalMemory()
          返回 Java 虚拟机中的内存总量。
 voidtraceInstructions(boolean on)
          启用/禁用指令跟踪。
 voidtraceMethodCalls(boolean on)
          启用/禁用方法调用跟踪。

 

从jdk文档中可以看到,Runtime类没有构造函数,这就意味着不能通过一般的new关键字来创建对象,但这个类里又有很多非静态方法,必须通过对象调用,可以看到有这样的一个静态方法getRuntime();返回值是Runtime,可以看出这就是单态设计模式。

2:Runtime的应用形式

Runtime rt=Runtime。getRuntime();

   在获得rt对象调用的程序后,可以赋给一个进程;

Process p= rt。exec(“winmine”);//扫雷游戏
    一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为。

 p。destory();

可以通过这个方法来销毁进程,释放资源
    当Applet和其他不被信任的代码调用任何Runtime方法时,常常会引起SecurityException异常。

三:System类的具体细节

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。

         由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。

                 1、成员方法

                   System类中提供了一些系统级的操作方法,这些方法实现的功能分别如下:

                   a、arraycopy方法

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

该方法的作用是数组拷贝,也就是将一个数组中的内容复制到另外一个数组中的指定位置,由于该方法是native方法,所以性能上比使用循环高效。

使用示例:

         int[] a = {1,2,3,4};

         int[] b = new int[5];

         System.arraycopy(a,1,b,3,2);

该代码的作用是将数组a中,从下标为1开始,复制到数组b从下标3开始的位置,总共复制2个。也就是将a[1]复制给b[3],将a[2]复制给b[4],这样经过复制以后数组a中的值不发生变化,而数组b中的值将变成{0,0,0,2,3}。

                   b、currentTimeMillis方法

                            public static long currentTimeMillis()

该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。例如:

         long l = System. currentTimeMillis();

则获得的将是一个长整型的数字,该数字就是以差值表达的当前时间。

使用该方法获得的时间不够直观,但是却很方便时间的计算。例如,计算程序运行需要的时间则可以使用如下的代码:

         long start = System. currentTimeMillis();

         codes。。。。。。

         long end = System. currentTimeMillis();

         long  time = end – start;

则这里变量time的值就代表该代码中间的for循环执行需要的毫秒数,使用这种方式可以测试不同算法的程序的执行效率高低,也可以用于后期线程控制时的精确延时实现。

                   c、exit方法

                            public static void exit(int status)

该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。

                   d、gc方法

                            public static void gc()

该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值