java中RunTime类的用途

原创 2018年04月15日 13:10:30


最近公司准备使用spark做流式计算,把原来做过的东西拿出来整理一下,有以下内容

1、通过java调用shell脚本启动spark

2、在虚拟机退出时执行特定的方法即注册一个回调函数

 对于Runtime类的测试<br/>
 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.
 每个java应用程序都有一个RunTime运行时环境的实例,该实例是单例的,它代表着正在运行的应用程序的环境
 
 The current runtime can be obtained from the getRuntime method.
 An application cannot create its own instance of this class
 当前的运行时环境可以通过getRuntime方法获取,一个运行时环境不能创建自己的运行时环境的实例

package com.lyzx.linux;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

public class RunTimeTest {
	public static void main(String[] args) {

//		normalExit();
		unNormalExit();
	}
	
	/**
	 * 使用java调用shell脚本,
	 * //shell脚本内容如下:spark-submit --master spark://master:7077 --class com.lyzx.pi.M /root/package/Pi.jar $1
	 * 
	 * 使用这个命令来执行shell脚本,如果按照下面的方式就意味着如果spark任务执行1个小时,就要等待一个小时才能获的执行的结果
	 * 
	 * @throws IOException
	 * @throws InterruptedException 
	 */
	public static void execShell() throws IOException{
		Runtime r = Runtime.getRuntime();
		Process p = r.exec("./spark.sh 10000");
		try {
			int waitFor = p.waitFor();
			System.out.println("waitFor:"+waitFor);
		} catch (InterruptedException e){
			e.printStackTrace();
		}
	}
	
	/**
	 * 非正常情况下推出,依然执行回调函数
	 */
	public static void unNormalExit(){
		Thread t = new Thread(new Hook());
		Runtime.getRuntime().addShutdownHook(t);
		
		Thread t1 = new Thread(new Th(),"A1");
		Thread t2 = new Thread(new Th(),"B1");
		
		t1.start();
		
		//此时主线程奔溃,但是回调函数依然执行
		int i = 1/0;
		System.out.println("====");
		t2.start();
	}
	
	/**
	 * 添加虚拟机结束时的回调函数
	 * 从下面的例子中可以看出,当4个子线程执行完毕后在执行回调函数
	 */
	public static void normalExit(){
		Thread t = new Thread(new Hook());
		Runtime.getRuntime().addShutdownHook(t);
		
		Thread t1 = new Thread(new Th(),"A");
		Thread t2 = new Thread(new Th(),"B");
		Thread t3 = new Thread(new Th(),"C");
		Thread t4 = new Thread(new Th(),"D");
		
		t1.start();
		t2.start();
		t3.start();
		t4.start();
	}
}


class Hook implements Runnable{
	@Override
	public void run() {
		System.out.println("回调函数.....");
	}
}


class Th implements Runnable{
	@Override
	public void run() {
		for(int i=0;i<500;i++){
			try {
				TimeUnit.MILLISECONDS.sleep(3);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println(Thread.currentThread().getName()+":::"+i);
		}
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lyzx_in_csdn/article/details/79948452

java中Runtime类总结

一.了解Runtime类 Runtime:运行时,是一个封装了JVM的类。每一个JAVA程序实际上都是启动了一个JVM进程,每一个JVM进程都对应一个Runtime实例,此实例是由JVM为其实例化...
  • tomcmd
  • tomcmd
  • 2015-10-08 12:56:44
  • 1191

java中的Runtime类

前言:Java的类库日益庞大,所包含的类和接口也不计其数。但其中有一些非常重要的类和接口,是Java类库中的核心部分。常见的有String、Object、Class、Collection、ClassL...
  • sinat_19171485
  • sinat_19171485
  • 2015-08-23 22:59:08
  • 5061

java中的Runtime类的作用

每个Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时 例如:  Runtime rt=Runtime.get...
  • wxwzy738
  • wxwzy738
  • 2012-07-02 23:32:11
  • 831

Java基础回顾 : Runtime类和System类

1、 Runtime 类的使用,Runtime 类的定义特点 :  ★ . Runtime类的介绍 : Runtime 指的是运行时,当每一个JVM 进程启动的时候,都会存在有一个Runtime ...
  • sinat_18882775
  • sinat_18882775
  • 2016-05-26 22:11:13
  • 732

Java Runtime类

RunTime类代表Java程序的运行时环境,每一个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与运行时环境相连,应用程序不能创建自己的Runtime实例,但可以通过getRu...
  • zhy_cheng
  • zhy_cheng
  • 2012-08-16 22:06:34
  • 6700

Java中系统相关的类:System类、Runtime类

Java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特点功能。Java提供了System类和Runtime类来与程序的运行平台进行交互。一、System类System...
  • OREO_GO
  • OREO_GO
  • 2016-08-07 12:49:49
  • 2169

单例模式的Java代码体现Runtime类(JDK提供的类)

Runtime类的源代码部分如下: /*Runtime类的部分源代码,给别人吹牛的小资本 *public class Runtime{ * private Runtime(){} * ...
  • u012110719
  • u012110719
  • 2015-05-02 12:10:09
  • 1124

JAVA API系列----System与Runtime类

·Java不支持全局函数和全局变量,Java将一些与系统相关的重要的函数和变量统一放在System类中。·System类中所有的成员都是静态的(static),使用时可以直接用类名System做前缀,...
  • yitongfling
  • yitongfling
  • 2011-03-23 12:23:00
  • 3036

runtime 几个要点总结-方法交换

函数替换 runtime forwardingTargetForSelector 消息转发 selector class_copyPropertyList property_getName resol...
  • sun2728
  • sun2728
  • 2016-08-08 10:45:39
  • 828

10常用类2.doc

  • 2013年05月03日 17:54
  • 82KB
  • 下载
收藏助手
不良信息举报
您举报文章:java中RunTime类的用途
举报原因:
原因补充:

(最多只允许输入30个字)