欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

java.lang.Runtime

发布时间:2025/5/22 编程问答 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java.lang.Runtime 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

2019独角兽企业重金招聘Python工程师标准>>>

Runtime是java application与系统的接口, 

可以启动单独的进程执行外部命令;

监控方法甚至指令的执行;

加载动态库(依赖于ClassLoader);

可以报告、控制java app的状态(内存使用、暂停、退出等);

对比load和loadLibray ,最终都是通过ClassLoader的 loadLibray实现的,不同的展示参数是绝对路径和相对路径(相对于java.libray.path)

package java.lang;import java.io.*; import java.util.StringTokenizer; import sun.reflect.CallerSensitive; import sun.reflect.Reflection;/*** 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* @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.* Most of the methods of class <code>Runtime</code> are instance* methods and must be invoked with respect to the current runtime object.** @return  the <code>Runtime</code> object associated with the current*          Java application.*/public static Runtime getRuntime() {return currentRuntime;}/** Don't let anyone else instantiate this class */private Runtime() {}/*** Terminates the currently running Java virtual machine by initiating its* shutdown sequence.  This method never returns normally.  The argument* serves as a status code; by convention, a nonzero status code indicates* abnormal termination.** <p> The virtual machine's shutdown sequence consists of two phases.  In* the first phase all registered {@link #addShutdownHook shutdown hooks},* if any, are started in some unspecified order and allowed to run* concurrently until they finish.  In the second phase all uninvoked* finalizers are run if {@link #runFinalizersOnExit finalization-on-exit}* has been enabled.  Once this is done the virtual machine {@link #halt* halts}.** <p> If this method is invoked after the virtual machine has begun its* shutdown sequence then if shutdown hooks are being run this method will* block indefinitely.  If shutdown hooks have already been run and on-exit* finalization has been enabled then this method halts the virtual machine* with the given status code if the status is nonzero; otherwise, it* blocks indefinitely.** <p> The <tt>{@link System#exit(int) System.exit}</tt> method is the* conventional and convenient means of invoking this method. <p>** @param  status*         Termination status.  By convention, a nonzero status code*         indicates abnormal termination.** @throws SecurityException*         If a security manager is present and its <tt>{@link*         SecurityManager#checkExit checkExit}</tt> method does not permit*         exiting with the specified status** @see java.lang.SecurityException* @see java.lang.SecurityManager#checkExit(int)* @see #addShutdownHook* @see #removeShutdownHook* @see #runFinalizersOnExit* @see #halt(int)*/public void exit(int status) {SecurityManager security = System.getSecurityManager();if (security != null) {security.checkExit(status);}Shutdown.exit(status);}/*** Registers a new virtual-machine shutdown hook.** <p> The Java virtual machine <i>shuts down</i> in response to two kinds* of events:**   <ul>**   <p> <li> The program <i>exits</i> normally, when the last non-daemon*   thread exits or when the <tt>{@link #exit exit}</tt> (equivalently,*   <tt>{@link System#exit(int) System.exit}</tt>) method is invoked, or**   <p> <li> The virtual machine is <i>terminated</i> in response to a*   user interrupt, such as typing <tt>^C</tt>, or a system-wide event,*   such as user logoff or system shutdown.**   </ul>** <p> A <i>shutdown hook</i> is simply an initialized but unstarted* thread.  When the virtual machine begins its shutdown sequence it will* start all registered shutdown hooks in some unspecified order and let* them run concurrently.  When all the hooks have finished it will then* run all uninvoked finalizers if finalization-on-exit has been enabled.* Finally, the virtual machine will halt.  Note that daemon threads will* continue to run during the shutdown sequence, as will non-daemon threads* if shutdown was initiated by invoking the <tt>{@link #exit exit}</tt>* method.** <p> Once the shutdown sequence has begun it can be stopped only by* invoking the <tt>{@link #halt halt}</tt> method, which forcibly* terminates the virtual machine.** <p> Once the shutdown sequence has begun it is impossible to register a* new shutdown hook or de-register a previously-registered hook.* Attempting either of these operations will cause an* <tt>{@link IllegalStateException}</tt> to be thrown.** <p> Shutdown hooks run at a delicate time in the life cycle of a virtual* machine and should therefore be coded defensively.  They should, in* particular, be written to be thread-safe and to avoid deadlocks insofar* as possible.  They should also not rely blindly upon services that may* have registered their own shutdown hooks and therefore may themselves in* the process of shutting down.  Attempts to use other thread-based* services such as the AWT event-dispatch thread, for example, may lead to* deadlocks.** <p> Shutdown hooks should also finish their work quickly.  When a* program invokes <tt>{@link #exit exit}</tt> the expectation is* that the virtual machine will promptly shut down and exit.  When the* virtual machine is terminated due to user logoff or system shutdown the* underlying operating system may only allow a fixed amount of time in* which to shut down and exit.  It is therefore inadvisable to attempt any* user interaction or to perform a long-running computation in a shutdown* hook.** <p> Uncaught exceptions are handled in shutdown hooks just as in any* other thread, by invoking the <tt>{@link ThreadGroup#uncaughtException* uncaughtException}</tt> method of the thread's <tt>{@link* ThreadGroup}</tt> object.  The default implementation of this method* prints the exception's stack trace to <tt>{@link System#err}</tt> and* terminates the thread; it does not cause the virtual machine to exit or* halt.** <p> In rare circumstances the virtual machine may <i>abort</i>, that is,* stop running without shutting down cleanly.  This occurs when the* virtual machine is terminated externally, for example with the* <tt>SIGKILL</tt> signal on Unix or the <tt>TerminateProcess</tt> call on* Microsoft Windows.  The virtual machine may also abort if a native* method goes awry by, for example, corrupting internal data structures or* attempting to access nonexistent memory.  If the virtual machine aborts* then no guarantee can be made about whether or not any shutdown hooks* will be run. <p>** @param   hook*          An initialized but unstarted <tt>{@link Thread}</tt> object** @throws  IllegalArgumentException*          If the specified hook has already been registered,*          or if it can be determined that the hook is already running or*          has already been run** @throws  IllegalStateException*          If the virtual machine is already in the process*          of shutting down** @throws  SecurityException*          If a security manager is present and it denies*          <tt>{@link RuntimePermission}("shutdownHooks")</tt>** @see #removeShutdownHook* @see #halt(int)* @see #exit(int)* @since 1.3*/public void addShutdownHook(Thread hook) {SecurityManager sm = System.getSecurityManager();if (sm != null) {sm.checkPermission(new RuntimePermission("shutdownHooks"));}ApplicationShutdownHooks.add(hook);}/*** De-registers a previously-registered virtual-machine shutdown hook. <p>** @param hook the hook to remove* @return <tt>true</tt> if the specified hook had previously been* registered and was successfully de-registered, <tt>false</tt>* otherwise.** @throws  IllegalStateException*          If the virtual machine is already in the process of shutting*          down** @throws  SecurityException*          If a security manager is present and it denies*          <tt>{@link RuntimePermission}("shutdownHooks")</tt>** @see #addShutdownHook* @see #exit(int)* @since 1.3*/public boolean removeShutdownHook(Thread hook) {SecurityManager sm = System.getSecurityManager();if (sm != null) {sm.checkPermission(new RuntimePermission("shutdownHooks"));}return ApplicationShutdownHooks.remove(hook);}/*** Forcibly terminates the currently running Java virtual machine.  This* method never returns normally.** <p> This method should be used with extreme caution.  Unlike the* <tt>{@link #exit exit}</tt> method, this method does not cause shutdown* hooks to be started and does not run uninvoked finalizers if* finalization-on-exit has been enabled.  If the shutdown sequence has* already been initiated then this method does not wait for any running* shutdown hooks or finalizers to finish their work. <p>** @param  status*         Termination status.  By convention, a nonzero status code*         indicates abnormal termination.  If the <tt>{@link Runtime#exit*         exit}</tt> (equivalently, <tt>{@link System#exit(int)*         System.exit}</tt>) method has already been invoked then this*         status code will override the status code passed to that method.** @throws SecurityException*         If a security manager is present and its <tt>{@link*         SecurityManager#checkExit checkExit}</tt> method does not permit*         an exit with the specified status** @see #exit* @see #addShutdownHook* @see #removeShutdownHook* @since 1.3*/public void halt(int status) {SecurityManager sm = System.getSecurityManager();if (sm != null) {sm.checkExit(status);}Shutdown.halt(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.** <p>If there is a security manager,* its <code>checkExit</code> method is first called* with 0 as its argument to ensure the exit is allowed.* This could result in a SecurityException.** @param value true to enable finalization on exit, false to disable* @deprecated  This method is inherently unsafe.  It may result in*      finalizers being called on live objects while other threads are*      concurrently manipulating those objects, resulting in erratic*      behavior or deadlock.** @throws  SecurityException*        if a security manager exists and its <code>checkExit</code>*        method doesn't allow the exit.** @see     java.lang.Runtime#exit(int)* @see     java.lang.Runtime#gc()* @see     java.lang.SecurityManager#checkExit(int)* @since   JDK1.1*/@Deprecatedpublic static void runFinalizersOnExit(boolean value) {SecurityManager security = System.getSecurityManager();if (security != null) {try {security.checkExit(0);} catch (SecurityException e) {throw new SecurityException("runFinalizersOnExit");}}Shutdown.setRunFinalizersOnExit(value);}/*** Executes the specified string command in a separate process.** <p>This is a convenience method.  An invocation of the form* <tt>exec(command)</tt>* behaves in exactly the same way as the invocation* <tt>{@link #exec(String, String[], File) exec}(command, null, null)</tt>.** @param   command   a specified system command.** @return  A new {@link Process} object for managing the subprocess** @throws  SecurityException*          If a security manager exists and its*          {@link SecurityManager#checkExec checkExec}*          method doesn't allow creation of the subprocess** @throws  IOException*          If an I/O error occurs** @throws  NullPointerException*          If <code>command</code> is <code>null</code>** @throws  IllegalArgumentException*          If <code>command</code> is empty** @see     #exec(String[], String[], File)* @see     ProcessBuilder*/public Process exec(String command) throws IOException {return exec(command, null, null);}/*** Executes the specified string command in a separate process with the* specified environment.** <p>This is a convenience method.  An invocation of the form* <tt>exec(command, envp)</tt>* behaves in exactly the same way as the invocation* <tt>{@link #exec(String, String[], File) exec}(command, envp, null)</tt>.** @param   command   a specified system command.** @param   envp      array of strings, each element of which*                    has environment variable settings in the format*                    <i>name</i>=<i>value</i>, or*                    <tt>null</tt> if the subprocess should inherit*                    the environment of the current process.** @return  A new {@link Process} object for managing the subprocess** @throws  SecurityException*          If a security manager exists and its*          {@link SecurityManager#checkExec checkExec}*          method doesn't allow creation of the subprocess** @throws  IOException*          If an I/O error occurs** @throws  NullPointerException*          If <code>command</code> is <code>null</code>,*          or one of the elements of <code>envp</code> is <code>null</code>** @throws  IllegalArgumentException*          If <code>command</code> is empty** @see     #exec(String[], String[], File)* @see     ProcessBuilder*/public Process exec(String command, String[] envp) throws IOException {return exec(command, envp, null);}/*** Executes the specified string command in a separate process with the* specified environment and working directory.** <p>This is a convenience method.  An invocation of the form* <tt>exec(command, envp, dir)</tt>* behaves in exactly the same way as the invocation* <tt>{@link #exec(String[], String[], File) exec}(cmdarray, envp, dir)</tt>,* where <code>cmdarray</code> is an array of all the tokens in* <code>command</code>.** <p>More precisely, the <code>command</code> string is broken* into tokens using a {@link StringTokenizer} created by the call* <code>new {@link StringTokenizer}(command)</code> with no* further modification of the character categories.  The tokens* produced by the tokenizer are then placed in the new string* array <code>cmdarray</code>, in the same order.** @param   command   a specified system command.** @param   envp      array of strings, each element of which*                    has environment variable settings in the format*                    <i>name</i>=<i>value</i>, or*                    <tt>null</tt> if the subprocess should inherit*                    the environment of the current process.** @param   dir       the working directory of the subprocess, or*                    <tt>null</tt> if the subprocess should inherit*                    the working directory of the current process.** @return  A new {@link Process} object for managing the subprocess** @throws  SecurityException*          If a security manager exists and its*          {@link SecurityManager#checkExec checkExec}*          method doesn't allow creation of the subprocess** @throws  IOException*          If an I/O error occurs** @throws  NullPointerException*          If <code>command</code> is <code>null</code>,*          or one of the elements of <code>envp</code> is <code>null</code>** @throws  IllegalArgumentException*          If <code>command</code> is empty** @see     ProcessBuilder* @since 1.3*/public Process exec(String command, String[] envp, File dir)throws IOException {if (command.length() == 0)throw new IllegalArgumentException("Empty command");StringTokenizer st = new StringTokenizer(command);String[] cmdarray = new String[st.countTokens()];for (int i = 0; st.hasMoreTokens(); i++)cmdarray[i] = st.nextToken();return exec(cmdarray, envp, dir);}/*** Executes the specified command and arguments in a separate process.** <p>This is a convenience method.  An invocation of the form* <tt>exec(cmdarray)</tt>* behaves in exactly the same way as the invocation* <tt>{@link #exec(String[], String[], File) exec}(cmdarray, null, null)</tt>.** @param   cmdarray  array containing the command to call and*                    its arguments.** @return  A new {@link Process} object for managing the subprocess** @throws  SecurityException*          If a security manager exists and its*          {@link SecurityManager#checkExec checkExec}*          method doesn't allow creation of the subprocess** @throws  IOException*          If an I/O error occurs** @throws  NullPointerException*          If <code>cmdarray</code> is <code>null</code>,*          or one of the elements of <code>cmdarray</code> is <code>null</code>** @throws  IndexOutOfBoundsException*          If <code>cmdarray</code> is an empty array*          (has length <code>0</code>)** @see     ProcessBuilder*/public Process exec(String cmdarray[]) throws IOException {return exec(cmdarray, null, null);}/*** Executes the specified command and arguments in a separate process* with the specified environment.** <p>This is a convenience method.  An invocation of the form* <tt>exec(cmdarray, envp)</tt>* behaves in exactly the same way as the invocation* <tt>{@link #exec(String[], String[], File) exec}(cmdarray, envp, null)</tt>.** @param   cmdarray  array containing the command to call and*                    its arguments.** @param   envp      array of strings, each element of which*                    has environment variable settings in the format*                    <i>name</i>=<i>value</i>, or*                    <tt>null</tt> if the subprocess should inherit*                    the environment of the current process.** @return  A new {@link Process} object for managing the subprocess** @throws  SecurityException*          If a security manager exists and its*          {@link SecurityManager#checkExec checkExec}*          method doesn't allow creation of the subprocess** @throws  IOException*          If an I/O error occurs** @throws  NullPointerException*          If <code>cmdarray</code> is <code>null</code>,*          or one of the elements of <code>cmdarray</code> is <code>null</code>,*          or one of the elements of <code>envp</code> is <code>null</code>** @throws  IndexOutOfBoundsException*          If <code>cmdarray</code> is an empty array*          (has length <code>0</code>)** @see     ProcessBuilder*/public Process exec(String[] cmdarray, String[] envp) throws IOException {return exec(cmdarray, envp, null);}/*** Executes the specified command and arguments in a separate process with* the specified environment and working directory.** <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 "environment" variable settings, this method creates* a new process in which to execute the specified command.** <p>This method checks that <code>cmdarray</code> is a valid operating* system command.  Which commands are valid is system-dependent,* but at the very least the command must be a non-empty list of* non-null strings.** <p>If <tt>envp</tt> is <tt>null</tt>, the subprocess inherits the* environment settings of the current process.** <p>A minimal set of system dependent environment variables may* be required to start a process on some operating systems.* As a result, the subprocess may inherit additional environment variable* settings beyond those in the specified environment.** <p>{@link ProcessBuilder#start()} is now the preferred way to* start a process with a modified environment.** <p>The working directory of the new subprocess is specified by <tt>dir</tt>.* If <tt>dir</tt> is <tt>null</tt>, the subprocess inherits the* current working directory of the current process.** <p>If a security manager exists, its* {@link SecurityManager#checkExec checkExec}* method is invoked with the first component of the array* <code>cmdarray</code> as its argument. This may result in a* {@link SecurityException} being thrown.** <p>Starting an operating system process is highly system-dependent.* Among the many things that can go wrong are:* <ul>* <li>The operating system program file was not found.* <li>Access to the program file was denied.* <li>The working directory does not exist.* </ul>** <p>In such cases an exception will be thrown.  The exact nature* of the exception is system-dependent, but it will always be a* subclass of {@link IOException}.*** @param   cmdarray  array containing the command to call and*                    its arguments.** @param   envp      array of strings, each element of which*                    has environment variable settings in the format*                    <i>name</i>=<i>value</i>, or*                    <tt>null</tt> if the subprocess should inherit*                    the environment of the current process.** @param   dir       the working directory of the subprocess, or*                    <tt>null</tt> if the subprocess should inherit*                    the working directory of the current process.** @return  A new {@link Process} object for managing the subprocess** @throws  SecurityException*          If a security manager exists and its*          {@link SecurityManager#checkExec checkExec}*          method doesn't allow creation of the subprocess** @throws  IOException*          If an I/O error occurs** @throws  NullPointerException*          If <code>cmdarray</code> is <code>null</code>,*          or one of the elements of <code>cmdarray</code> is <code>null</code>,*          or one of the elements of <code>envp</code> is <code>null</code>** @throws  IndexOutOfBoundsException*          If <code>cmdarray</code> is an empty array*          (has length <code>0</code>)** @see     ProcessBuilder* @since 1.3*/public Process exec(String[] cmdarray, String[] envp, File dir)throws IOException {return new ProcessBuilder(cmdarray).environment(envp).directory(dir).start();}/*** Returns the number of processors available to the Java virtual machine.** <p> This value may change during a particular invocation of the virtual* machine.  Applications that are sensitive to the number of available* processors should therefore occasionally poll this property and adjust* their resource usage appropriately. </p>** @return  the maximum number of processors available to the virtual*          machine; never smaller than one* @since 1.4*/public native int availableProcessors();/*** Returns the amount of free memory in the Java Virtual Machine.* 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.*/public native long freeMemory();/*** Returns the total amount of memory in the Java virtual machine.* The value returned by this method may vary over time, depending on* the host environment.* <p>* Note that the amount of memory required to hold an object of any* given type may be implementation-dependent.** @return  the total amount of memory currently available for current*          and future objects, measured in bytes.*/public native long totalMemory();/*** Returns the maximum amount of memory that the Java virtual machine will* attempt to use.  If there is no inherent limit then the value {@link* java.lang.Long#MAX_VALUE} will be returned. </p>** @return  the maximum amount of memory that the virtual machine will*          attempt to use, measured in bytes* @since 1.4*/public native long maxMemory();/*** Runs the garbage collector.* Calling this method suggests that the Java virtual machine expend* effort toward recycling unused objects in order to make the memory* they currently occupy available for quick reuse. When control* returns from the method call, the virtual machine has made* its best effort to recycle all discarded objects.* <p>* The name <code>gc</code> stands for "garbage* collector". The virtual machine performs this recycling* process automatically as needed, in a separate thread, even if the* <code>gc</code> method is not invoked explicitly.* <p>* The method {@link System#gc()} is the conventional and convenient* means of invoking this method.*/public native void gc();/* Wormhole for calling java.lang.ref.Finalizer.runFinalization */private static native void runFinalization0();/*** Runs the finalization methods of any objects pending finalization.* Calling this method suggests that the Java virtual machine expend* effort toward running the <code>finalize</code> methods of objects* that have been found to be discarded but whose <code>finalize</code>* methods have not yet been run. When control returns from the* method call, the virtual machine has made a best effort to* complete all outstanding finalizations.* <p>* The virtual machine performs the finalization process* automatically as needed, in a separate thread, if the* <code>runFinalization</code> method is not invoked explicitly.* <p>* The method {@link System#runFinalization()} is the conventional* and convenient means of invoking this method.** @see     java.lang.Object#finalize()*/public void runFinalization() {runFinalization0();}/*** Enables/Disables tracing of instructions.* If the <code>boolean</code> argument is <code>true</code>, this* method suggests that the Java virtual machine emit debugging* information for each instruction in the virtual machine as it* is executed. The format of this information, and the file or other* output stream to which it is emitted, depends on the host environment.* The virtual machine may ignore this request if it does not support* this feature. The destination of the trace output is system* dependent.* <p>* If the <code>boolean</code> argument is <code>false</code>, this* method causes the virtual machine to stop performing the* detailed instruction trace it is performing.** @param   on   <code>true</code> to enable instruction tracing;*               <code>false</code> to disable this feature.*/public native void traceInstructions(boolean on);/*** Enables/Disables tracing of method calls.* If the <code>boolean</code> argument is <code>true</code>, this* method suggests that the Java virtual machine emit debugging* information for each method in the virtual machine as it is* called. The format of this information, and the file or other output* stream to which it is emitted, depends on the host environment. The* virtual machine may ignore this request if it does not support* this feature.* <p>* Calling this method with argument false suggests that the* virtual machine cease emitting per-call debugging information.** @param   on   <code>true</code> to enable instruction tracing;*               <code>false</code> to disable this feature.*/public native void traceMethodCalls(boolean on);/*** Loads the specified filename as a dynamic library. The filename* argument must be a complete path name,* (for example* <code>Runtime.getRuntime().load("/home/avh/lib/libX11.so");</code>).* <p>* First, if there is a security manager, its <code>checkLink</code>* method is called with the <code>filename</code> as its argument.* This may result in a security exception.* <p>* This is similar to the method {@link #loadLibrary(String)}, but it* accepts a general file name as an argument rather than just a library* name, allowing any file of native code to be loaded.* <p>* The method {@link System#load(String)} is the conventional and* convenient means of invoking this method.** @param      filename   the file to load.* @exception  SecurityException  if a security manager exists and its*             <code>checkLink</code> method doesn't allow*             loading of the specified dynamic library* @exception  UnsatisfiedLinkError  if the file does not exist.* @exception  NullPointerException if <code>filename</code> is*             <code>null</code>* @see        java.lang.Runtime#getRuntime()* @see        java.lang.SecurityException* @see        java.lang.SecurityManager#checkLink(java.lang.String)*/@CallerSensitivepublic void load(String filename) {load0(Reflection.getCallerClass(), filename);}synchronized void load0(Class fromClass, String filename) {SecurityManager security = System.getSecurityManager();if (security != null) {security.checkLink(filename);}if (!(new File(filename).isAbsolute())) {throw new UnsatisfiedLinkError("Expecting an absolute path of the library: " + filename);}ClassLoader.loadLibrary(fromClass, filename, true);}/*** Loads the dynamic library with the specified library name.* A file containing native code is loaded from the local file system* from a place where library files are conventionally obtained. The* details of this process are implementation-dependent. The* mapping from a library name to a specific filename is done in a* system-specific manner.* <p>* First, if there is a security manager, its <code>checkLink</code>* method is called with the <code>libname</code> as its argument.* This may result in a security exception.* <p>* The method {@link System#loadLibrary(String)} is the conventional* and convenient means of invoking this method. If native* methods are to be used in the implementation of a class, a standard* strategy is to put the native code in a library file (call it* <code>LibFile</code>) and then to put a static initializer:* <blockquote><pre>* static { System.loadLibrary("LibFile"); }* </pre></blockquote>* within the class declaration. When the class is loaded and* initialized, the necessary native code implementation for the native* methods will then be loaded as well.* <p>* If this method is called more than once with the same library* name, the second and subsequent calls are ignored.** @param      libname   the name of the library.* @exception  SecurityException  if a security manager exists and its*             <code>checkLink</code> method doesn't allow*             loading of the specified dynamic library* @exception  UnsatisfiedLinkError  if the library does not exist.* @exception  NullPointerException if <code>libname</code> is*             <code>null</code>* @see        java.lang.SecurityException* @see        java.lang.SecurityManager#checkLink(java.lang.String)*/@CallerSensitivepublic void loadLibrary(String libname) {loadLibrary0(Reflection.getCallerClass(), libname);}synchronized void loadLibrary0(Class fromClass, String libname) {SecurityManager security = System.getSecurityManager();if (security != null) {security.checkLink(libname);}if (libname.indexOf((int)File.separatorChar) != -1) {throw new UnsatisfiedLinkError("Directory separator should not appear in library name: " + libname);}ClassLoader.loadLibrary(fromClass, libname, false);}/*** Creates a localized version of an input stream. This method takes* an <code>InputStream</code> and returns an <code>InputStream</code>* equivalent to the argument in all respects except that it is* localized: as characters in the local character set are read from* the stream, they are automatically converted from the local* character set to Unicode.* <p>* If the argument is already a localized stream, it may be returned* as the result.** @param      in InputStream to localize* @return     a localized input stream* @see        java.io.InputStream* @see        java.io.BufferedReader#BufferedReader(java.io.Reader)* @see        java.io.InputStreamReader#InputStreamReader(java.io.InputStream)* @deprecated As of JDK&nbsp;1.1, the preferred way to translate a byte* stream in the local encoding into a character stream in Unicode is via* the <code>InputStreamReader</code> and <code>BufferedReader</code>* classes.*/@Deprecatedpublic InputStream getLocalizedInputStream(InputStream in) {return in;}/*** Creates a localized version of an output stream. This method* takes an <code>OutputStream</code> and returns an* <code>OutputStream</code> equivalent to the argument in all respects* except that it is localized: as Unicode characters are written to* the stream, they are automatically converted to the local* character set.* <p>* If the argument is already a localized stream, it may be returned* as the result.** @deprecated As of JDK&nbsp;1.1, the preferred way to translate a* Unicode character stream into a byte stream in the local encoding is via* the <code>OutputStreamWriter</code>, <code>BufferedWriter</code>, and* <code>PrintWriter</code> classes.** @param      out OutputStream to localize* @return     a localized output stream* @see        java.io.OutputStream* @see        java.io.BufferedWriter#BufferedWriter(java.io.Writer)* @see        java.io.OutputStreamWriter#OutputStreamWriter(java.io.OutputStream)* @see        java.io.PrintWriter#PrintWriter(java.io.OutputStream)*/@Deprecatedpublic OutputStream getLocalizedOutputStream(OutputStream out) {return out;}}


转载于:https://my.oschina.net/u/255456/blog/370662

总结

以上是生活随笔为你收集整理的java.lang.Runtime的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。