/*
java 的 Runtime 和 Process类 以及java的单例模式
单例模式:大型开发的时候如果一个程序只需要一个类的实例进行服务那么 我们就可以使用单例模式
Runtime类没有public构造函数 我们只能通过 getRuntime静态方法获得 这个类可以动态的获得JVM的空闲内存 所有内存 以及运行一个子进程 exec函数
制作可视化编译工具的时候可以利用这个
Process类中的函数可以获得子进程的输入输出流
*/
import java.io.* ;// 导入javaIO包的 所有类 输入输出流都在这个类
class Test
{
public static void main(String []args) throws Exception //直接抛出所有异常
{
Runtime run=Runtime.getRuntime(); //只能通过静态方法获得一个实例这就是 单例模式
System.out.println(run.freeMemory()); //获得JVM的 空闲内存
System.out.println(run.totalMemory());//获得JVM虚拟机的全部内存
// run.exec("explorer.exe http://www.baidu.com");//类似于VC的ShellExcute函数 VB的shell函数
Process p=run.exec("netstat -na ");
InputStream in=p.getInputStream(); //拦截输入流通过Runtime类的函数
int data; //用于接收输入流数据
while((data=in.read())!=-1) //如果读取到末尾会返回-1 否则返回 0-255对应的ASCII码
{
System.out.print((char)data); //将流中的每个字节 输出
}
//下面演示了单例模式 类似Runtime类一个 唯一的实例为全局服务
Singleton single=Singleton.getInstance(); //通过唯一的一个静态方法返回一个静态实例
single.outPut(); //调用函数
}
}
//下面这个类演示了单利模式
class Singleton
{
private Singleton(){};//只有构造方法私有了才不能被外部调用从而实现单例模式
private static final Singleton onlyInstance=new Singleton();//创建一个私有的静态 final常量 保证只有一个实例
public static Singleton getInstance()
{
return Singleton.onlyInstance;
}
void outPut()
{
System.out.println("Singleton Instance is constructed");
}
}