runtime.java
来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 496 行 · 第 1/2 页
JAVA
496 行
/*
* @(#)Runtime.java 1.26 97/02/24
*
* Copyright (c) 1995, 1996 Sun Microsystems, Inc. All Rights Reserved.
*
* This software is the confidential and proprietary information of Sun
* Microsystems, Inc. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with Sun.
*
* SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
* SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
* SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
* THIS SOFTWARE OR ITS DERIVATIVES.
*
* CopyrightVersion 1.1_beta
*
*/
package java.lang;
import java.io.*;
import java.util.StringTokenizer;
/*
* Every Java application has a single instance of class
* <code>Runtime</code> that allows the application to interface with
* the environment in which the application is running. The current
* runtime can be obtained from the <code>getRuntime</code> method.
* <p>
* An application cannot create its own instance of this class.
*
* @author unascribed
* @version 1.26, 02/24/97
* @see java.lang.Runtime#getRuntime()
* @since JDK1.0
*/
public class Runtime {
private static Runtime currentRuntime = new Runtime();
/**
* Returns the runtime object associated with the current Java application.
*
* @return the <code>Runtime</code> object associated with the current
* Java application.
* @since JDK1.0
*/
public static Runtime getRuntime() {
return currentRuntime;
}
/** Don't let anyone else instantiate this class */
private Runtime() {}
/* Helper for exit
*/
private native void exitInternal(int status);
/**
* Terminates the currently running Java Virtual Machine. This
* method never returns normally.
* <p>
* If there is a security manager, its <code>checkExit</code> method
* is called with the status as its argument. This may result in a
* security exception.
* <p>
* The argument serves as a status code; by convention, a nonzero
* status code indicates abnormal termination.
*
* @param status exit status.
* @exception SecurityException if the current thread cannot exit with
* the specified status.
* @see java.lang.SecurityException
* @see java.lang.SecurityManager#checkExit(int)
* @since JDK1.0
*/
public void exit(int status) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkExit(status);
}
exitInternal(status);
}
/**
* Enable or disable finalization on exit; doing so specifies that the
* finalizers of all objects that have finalizers that have not yet been
* automatically invoked are to be run before the Java runtime exits.
* By default, finalization on exit is disabled. An invocation of
* the runFinalizersOnExit method is permitted only if the caller is
* allowed to exit, and is otherwise rejected by the security manager.
* @see Runtime#gc
* @see Runtime#exit
* @since JDK1.1
*/
public static void runFinalizersOnExit(boolean value) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
try { security.checkExit(0); }
catch (SecurityException e) {
throw new SecurityException("runFinalizersOnExit");
}
}
runFinalizersOnExit0(value);
}
/*
* Private variable holding the boolean determining whether to finalize
* on exit. The default value of the variable is false. See the comment
* on Runtime.runFinalizersOnExit for constraints on modifying this.
*/
private static native void runFinalizersOnExit0(boolean value);
/* Helper for exec
*/
private native Process execInternal(String cmdarray[], String envp[])
throws IOException;
/**
* Executes the specified string command in a separate process.
* <p>
* The <code>command</code> argument is parsed into tokens and then
* executed as a command in a separate process. This method has
* exactly the same effect as <code>exec(command, null)</code>.
*
* @param command a specified system command.
* @return a <code>Process</code> object for managing the subprocess.
* @exception SecurityException if the current thread cannot create a
* subprocess.
* @see java.lang.Runtime#exec(java.lang.String, java.lang.String[])
* @since JDK1.0
*/
public Process exec(String command) throws IOException {
return exec(command, null);
}
/**
* Executes the specified string command in a separate process with the
* specified environment.
* <p>
* This method breaks the <code>command</code> string into tokens and
* creates a new array <code>cmdarray</code> containing the tokens; it
* then performs the call <code>exec(cmdarray, envp)</code>.
*
* @param command a specified system command.
* @param envp array containing environment in format
* <i>name</i>=<i>value</i>
* @return a <code>Process</code> object for managing the subprocess.
* @exception SecurityException if the current thread cannot create a
* subprocess.
* @see java.lang.Runtime#exec(java.lang.String[], java.lang.String[])
* @since JDK1.0
*/
public Process exec(String command, String envp[]) throws IOException {
int count = 0;
String cmdarray[];
StringTokenizer st;
st = new StringTokenizer(command);
count = st.countTokens();
cmdarray = new String[count];
st = new StringTokenizer(command);
count = 0;
while (st.hasMoreTokens()) {
cmdarray[count++] = st.nextToken();
}
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkExec(cmdarray[0]);
}
return execInternal(cmdarray, envp);
}
/**
* Executes the specified command and arguments in a separate process.
* <p>
* The command specified by the tokens in <code>cmdarray</code> is
* executed as a command in a separate process. This has exactly the
* same effect as <code>exec(cmdarray, null)</code>.
*
* @param cmdarray array containing the command to call and
* its arguments.
* @return a <code>Process</code> object for managing the subprocess.
* @exception SecurityException if the current thread cannot create a
* subprocess.
* @see java.lang.Runtime#exec(java.lang.String[], java.lang.String[])
* @since JDK1.0
*/
public Process exec(String cmdarray[]) throws IOException {
return exec(cmdarray, null);
}
/**
* Executes the specified command and arguments in a separate process
* with the specified environment.
* <p>
* If there is a security manager, its <code>checkExec</code> method
* is called with the first component of the array
* <code>cmdarray</code> as its argument. This may result in a security
* exception.
* <p>
* Given an array of strings <code>cmdarray</code>, representing the
* tokens of a command line, and an array of strings <code>envp</code>,
* representing an "environment" that defines system
* properties, this method creates a new process in which to execute
* the specified command.
*
* @param cmdarray array containing the command to call and
* its arguments.
* @param envp array containing environment in format
* <i>name</i>=<i>value</i>.
* @return a <code>Process</code> object for managing the subprocess.
* @exception SecurityException if the current thread cannot create a
* subprocess.
* @see java.lang.SecurityException
* @see java.lang.SecurityManager#checkExec(java.lang.String)
* @since JDK1.0
*/
public Process exec(String cmdarray[], String envp[]) throws IOException {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkExec(cmdarray[0]);
}
return execInternal(cmdarray, envp);
}
/**
* Returns the amount of free memory in the system. The value returned
* by this method is always less than the value returned by the
* <code>totalMemory</code> method. Calling the <code>gc</code> method may
* result in increasing the value returned by <code>freeMemory.</code>
*
* @return an approximation to the total amount of memory currently
* available for future allocated objects, measured in bytes.
* @since JDK1.0
*/
public native long freeMemory();
/**
* Returns the total amount of memory in the Java Virtual Machine.
*
* @return the total amount of memory currently available for allocating
* objects, measured in bytes.
* @since JDK1.0
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?