📜  Java多线程-Runtime类

📅  最后修改于: 2020-09-27 01:32:37             🧑  作者: Mango

Java Runtime类

Java Runtime类用于与Java运行时环境进行交互。 Java Runtime类提供了用于执行进程,调用GC,获取总内存和可用内存等的方法。java.lang.Runtime类只有一个实例可用于一个Java应用程序。

Runtime.getRuntime()方法返回Runtime类的单例实例。

Java Runtime类的重要方法

No. Method Description
1) public static Runtime getRuntime() returns the instance of Runtime class.
2) public void exit(int status) terminates the current virtual machine.
3) public void addShutdownHook(Thread hook) registers new hook thread.
4) public Process exec(String command)throws IOException executes given command in a separate process.
5) public int availableProcessors() returns no. of available processors.
6) public long freeMemory() returns amount of free memory in JVM.
7) public long totalMemory() returns amount of total memory in JVM.

Java Runtime exec()方法

public class Runtime1{
 public static void main(String args[])throws Exception{
  Runtime.getRuntime().exec("notepad");//will open a new notepad
 }
}

如何用Java关闭系统

您可以使用shutdown -s命令关闭系统。对于Windows OS,您需要提供关闭命令的完整路径,例如c:\\ Windows \\ System32 \\ shutdown。

在这里,您可以使用-s开关关闭系统,-r开关重新启动系统,以及-t开关指定时间延迟。

public class Runtime2{
 public static void main(String args[])throws Exception{
  Runtime.getRuntime().exec("shutdown -s -t 0");
 }
}

如何用Java关闭Windows系统

public class Runtime2{
 public static void main(String args[])throws Exception{
  Runtime.getRuntime().exec("c:\\Windows\\System32\\shutdown -s -t 0");
 }
}

如何用Java重新启动系统

public class Runtime3{
 public static void main(String args[])throws Exception{
  Runtime.getRuntime().exec("shutdown -r -t 0");
 }
}

Java运行时availableProcessors()

public class Runtime4{
 public static void main(String args[])throws Exception{
  System.out.println(Runtime.getRuntime().availableProcessors());
 }
}

Java运行时freeMemory()和totalMemory()方法

在给定的程序中,创建10000个实例后,可用内存将小于以前的可用内存。但是在gc()调用之后,您将获得更多的可用内存。

public class MemoryTest{
 public static void main(String args[])throws Exception{
  Runtime r=Runtime.getRuntime();
  System.out.println("Total Memory: "+r.totalMemory());
  System.out.println("Free Memory: "+r.freeMemory());
  
  for(int i=0;i<10000;i++){
   new MemoryTest();
  }
  System.out.println("After creating 10000 instance, Free Memory: "+r.freeMemory());
  System.gc();
  System.out.println("After gc(), Free Memory: "+r.freeMemory());
 }
}
Total Memory: 100139008
Free Memory: 99474824
After creating 10000 instance, Free Memory: 99310552
After gc(), Free Memory: 100182832