thread.html
来自「j2se5-api-zh,java文档的中文版本」· HTML 代码 · 共 1,202 行 · 第 1/5 页
HTML
1,202 行
<A NAME="run()"><!-- --></A><H3>run</H3><PRE>public void <B>run</B>()</PRE><DL><DD>如果该线程是使用独立的 <code>Runnable</code> 运行对象构造的,则调用该 <code>Runnable</code> 对象的 <code>run</code> 方法;否则,该方法不执行任何操作并返回。<p><code>Thread</code> 的子类应该重写该方法。<P><DD><DL><DT><B>指定者:</B><DD>接口 <CODE><A HREF="Runnable.html" title="java.lang 中的接口">Runnable</A></CODE> 中的 <CODE><A HREF="Runnable.html#run()">run</A></CODE></DL></DD><DD><DL><DT><B>另请参见:</B><DD><A HREF="Thread.html#start()"><CODE>start()</CODE></A>, <A HREF="Thread.html#stop()"><CODE>stop()</CODE></A>, <A HREF="Thread.html#Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)"><CODE>Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)</CODE></A>, <A HREF="Runnable.html#run()"><CODE>Runnable.run()</CODE></A></DL></DD></DL><HR><A NAME="stop()"><!-- --></A><H3>stop</H3><PRE><FONT SIZE="-1"><A HREF="Deprecated.html" title="java.lang 中的注释">@Deprecated</A></FONT>public final void <B>stop</B>()</PRE><DL><DD><B>已过时。</B> <I>该方法具有固有的不安全性。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 <code>ThreadDeath</code> 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。<code>stop</code> 的许多使用都应由只修改某些变量以指示目标线程应该停止运行的代码来取代。目标线程应定期检查该变量,并且如果该变量指示它要停止运行,则从其运行方法依次返回。如果目标线程等待很长时间(例如基于一个条件变量),则应使用 <code>interrupt</code> 方法来中断该等待。有关更多信息,请参阅<a href="../../../guide/misc/threadPrimitiveDeprecation.html">为何 Thread.stop、Thread.suspend 和 Thread.resume 遭到反对?</a>。</I><P><DD>强迫线程停止执行。<p>如果安装了安全管理器,则以 <code>this</code> 作为其参数调用 <code>checkAccess</code> 方法。这可能引发 <code>SecurityException</code>(在当前线程中)。<p>如果该线程不同于当前线程(即当前线程试图终止除它本身以外的某一线程),则安全管理器的 <code>checkPermission</code> 方法(带有 <code>RuntimePermission("stopThread")</code> 参数)也会被调用。这会再次抛出 <code>SecurityException</code>(在当前线程中)。<p>无论该线程在做些什么,它所代表的线程都被迫异常停止,并抛出一个新创建的 <code>ThreadDeath</code> 对象,作为异常。<p>停止一个尚未启动的线程是允许的。如果最后启动了该线程,它会立即终止。<p>应用程序通常不应试图捕获 <code>ThreadDeath</code>,除非它必须执行某些异常的清除操作(注意,抛出 <code>ThreadDeath</code> 将导致 <code>try</code> 语句的 <code>finally</code> 子句在线程正式终止前执行)。如果 <code>catch</code> 子句捕获了一个 <code>ThreadDeath</code> 对象,则重新抛出该对象很重要,因为这样该线程才会真正终止。<p>对其他未捕获的异常作出反应的顶级错误处理程序不会打印输出消息,或者另外通知应用程序未捕获到的异常是否为 <code>ThreadDeath</code> 的一个实例。<P><DD><DL></DL></DD><DD><DL><DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果当前线程不能修改该线程。<DT><B>另请参见:</B><DD><A HREF="Thread.html#interrupt()"><CODE>interrupt()</CODE></A>, <A HREF="Thread.html#checkAccess()"><CODE>checkAccess()</CODE></A>, <A HREF="Thread.html#run()"><CODE>run()</CODE></A>, <A HREF="Thread.html#start()"><CODE>start()</CODE></A>, <A HREF="ThreadDeath.html" title="java.lang 中的类"><CODE>ThreadDeath</CODE></A>, <A HREF="ThreadGroup.html#uncaughtException(java.lang.Thread, java.lang.Throwable)"><CODE>ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable)</CODE></A>, <A HREF="SecurityManager.html#checkAccess(java.lang.Thread)"><CODE>SecurityManager.checkAccess(Thread)</CODE></A>, <A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>SecurityManager.checkPermission(java.security.Permission)</CODE></A></DL></DD></DL><HR><A NAME="stop(java.lang.Throwable)"><!-- --></A><H3>stop</H3><PRE><FONT SIZE="-1"><A HREF="Deprecated.html" title="java.lang 中的注释">@Deprecated</A></FONT>public final void <B>stop</B>(<A HREF="Throwable.html" title="java.lang 中的类">Throwable</A> obj)</PRE><DL><DD><B>已过时。</B> <I>该方法具有固有的不安全性。请参阅 <A HREF="Thread.html#stop()"><CODE>stop()</CODE></A> 以获得详细信息。该方法的附加危险是它可用于生成目标线程未准备处理的异常(包括若没有该方法该线程不太可能抛出的已检查的异常)。有关更多信息,请参阅<a href="../../../guide/misc/threadPrimitiveDeprecation.html">为何 Thread.stop、Thread.suspend 和 Thread.resume 遭到反对?</a>。</I><P><DD>强迫线程停止执行。<p>如果安装了安全管理器,则调用该线程的 <code>checkAccess</code> 方法,这可能引发 <code>SecurityException</code>(在当前线程中)。 <p>如果该线程不同于当前线程(即当前线程试图终止除它本身以外的某一线程),或者 <code>obj</code> 不是 <code>ThreadDeath</code> 的一个实例,则安全管理器的 <code>checkPermission</code> 方法(带有 <code>RuntimePermission("stopThread")</code> 参数)也会被调用。此外,这可能抛出 <code>SecurityException</code>(在当前线程中)。<p>如果参数 <code>obj</code> 为 null,则抛出 <code>NullPointerException</code>(在当前线程中)。<p>无论该线程在做些什么,它所代表的线程都被迫异常停止,并抛出 <code>Throwable</code> 对象 <code>obj</code>,作为一个异常。这是一种不正常的操作,通常情况下,应使用不带任何参数的 <code>stop</code> 方法。<p>停止一个尚未启动的线程是允许的。如果最后启动了该线程,它会立即终止。<P><DD><DL></DL></DD><DD><DL><DT><B>参数:</B><DD><CODE>obj</CODE> - 要抛出的可抛出对象。<DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果当前线程不能修改该线程。<DT><B>另请参见:</B><DD><A HREF="Thread.html#interrupt()"><CODE>interrupt()</CODE></A>, <A HREF="Thread.html#checkAccess()"><CODE>checkAccess()</CODE></A>, <A HREF="Thread.html#run()"><CODE>run()</CODE></A>, <A HREF="Thread.html#start()"><CODE>start()</CODE></A>, <A HREF="Thread.html#stop()"><CODE>stop()</CODE></A>, <A HREF="SecurityManager.html#checkAccess(java.lang.Thread)"><CODE>SecurityManager.checkAccess(Thread)</CODE></A>, <A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>SecurityManager.checkPermission(java.security.Permission)</CODE></A></DL></DD></DL><HR><A NAME="interrupt()"><!-- --></A><H3>interrupt</H3><PRE>public void <B>interrupt</B>()</PRE><DL><DD>中断线程。 <p> 如果当前线程没有中断它自己(这在任何情况下都是允许的),则该线程的 <A HREF="Thread.html#checkAccess()"><CODE>checkAccess</CODE></A> 方法就会被调用,这可能抛出 <A HREF="SecurityException.html" title="java.lang 中的类"><CODE>SecurityException</CODE></A>。<p> 如果线程在调用 <A HREF="Object.html" title="java.lang 中的类"><CODE>Object</CODE></A> 类的 <A HREF="Object.html#wait()"><CODE>wait()</CODE></A>、<A HREF="Object.html#wait(long)"><CODE>wait(long)</CODE></A> 或 <A HREF="Object.html#wait(long, int)"><CODE>wait(long, int)</CODE></A> 方法,或者该类的 <A HREF="Thread.html#join()"><CODE>join()</CODE></A>、<A HREF="Thread.html#join(long)"><CODE>join(long)</CODE></A>、<A HREF="Thread.html#join(long, int)"><CODE>join(long, int)</CODE></A>、<A HREF="Thread.html#sleep(long)"><CODE>sleep(long)</CODE></A> 或 <A HREF="Thread.html#sleep(long, int)"><CODE>sleep(long, int)</CODE></A> 方法过程中受阻,则其中断状态将被清除,它还将收到一个 <A HREF="InterruptedException.html" title="java.lang 中的类"><CODE>InterruptedException</CODE></A>。<p> 如果该线程在<CODE></code>可中断的通道<code></CODE>上的 I/O 操作中受阻,则该通道将被关闭,该线程的中断状态将被设置并且该线程将收到一个 <CODE>ClosedByInterruptException</CODE>。<p> 如果该线程在一个 <CODE>Selector</CODE> 中受阻,则该线程的中断状态将被设置,它将立即从选择操作返回,并可能带有一个非零值,就好像调用了选择器的 <CODE>wakeup</CODE> 方法一样。<p> 如果以前的条件都没有保存,则该线程的中断状态将被设置。</p><P><DD><DL></DL></DD><DD><DL><DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果当前线程无法修改该线程</DL></DD></DL><HR><A NAME="interrupted()"><!-- --></A><H3>interrupted</H3><PRE>public static boolean <B>interrupted</B>()</PRE><DL><DD>测试当前线程是否已经中断。线程的<i>中断状态</i> 由该方法清除。换句话说,如果连续两次调用该方法,则第二次调用将返回 false(在第一次调用已清除了其中断状态之后,且第二次调用检验完中断状态前,当前线程再次中断的情况除外)。<P><DD><DL></DL></DD><DD><DL><DT><B>返回:</B><DD>如果当前线程已经中断,则返回 <code>true</code>;否则返回 <code>false</code>。<DT><B>另请参见:</B><DD><A HREF="Thread.html#isInterrupted()"><CODE>isInterrupted()</CODE></A></DL></DD></DL><HR><A NAME="isInterrupted()"><!-- --></A><H3>isInterrupted</H3><PRE>public boolean <B>isInterrupted</B>()</PRE><DL><DD>测试线程是否已经中断。线程的<i>中断状态</i> 不受该方法的影响。<P><DD><DL></DL></DD><DD><DL><DT><B>返回:</B><DD>如果该线程已经中断,则返回 <code>true</code>;否则返回 <code>false</code>。<DT><B>另请参见:</B><DD><A HREF="Thread.html#interrupted()"><CODE>interrupted()</CODE></A></DL></DD></DL><HR><A NAME="destroy()"><!-- --></A><H3>destroy</H3><PRE><FONT SIZE="-1"><A HREF="Deprecated.html" title="java.lang 中的注释">@Deprecated</A></FONT>public void <B>destroy</B>()</PRE><DL><DD><B>已过时。</B> <I>该方法最初用于破坏该线程,但不作任何清除。它所保持的任何监视器都会保持锁定状态。不过,该方法决不会被实现。即使要实现,它也极有可能以 <A HREF="Thread.html#suspend()"><CODE>suspend()</CODE></A> 方式被死锁。如果目标线程被破坏时保持一个保护关键系统资源的锁,则任何线程在任何时候都无法再次访问该资源。如果另一个线程曾试图锁定该资源,则会出现死锁。这类死锁通常会证明它们自己是“冻结”的进程。有关更多信息,请参阅<a href="../../../guide/misc/threadPrimitiveDeprecation.html">为何 Thread.stop、Thread.suspend 和 Thread.resume 遭到反对?</a>。</I><P><DD>抛出 <A HREF="NoSuchMethodError.html" title="java.lang 中的类"><CODE>NoSuchMethodError</CODE></A>。<P><DD><DL></DL></DD><DD><DL><DT><B>抛出:</B><DD><CODE><A HREF="NoSuchMethodError.html" title="java.lang 中的类">NoSuchMethodError</A></CODE> - 始终</DL></DD></DL><HR><A NAME="isAlive()"><!-- --></A><H3>isAlive</H3><PRE>public final boolean <B>isAlive</B>()</PRE><DL><DD>测试线程是否处于活动状态。如果线程已经启动且尚未终止,则为活动状态。<P><DD><DL></DL></DD><DD><DL><DT><B>返回:</B><DD>如果该线程处于活动状态,则返回 <code>true</code>;否则返回 <code>false</code>。</DL></DD></DL><HR><A NAME="suspend()"><!-- --></A><H3>suspend</H3><PRE><FONT SIZE="-1"><A HREF="Deprecated.html" title="java.lang 中的注释">@Deprecated</A></FONT>public final void <B>suspend</B>()</PRE><DL><DD><B>已过时。</B> <I>该方法已经遭到反对,因为它具有固有的死锁倾向。如果目标线程挂起时在保护关键系统资源的监视器上保持有锁,则在目标线程重新开始以前任何线程都不能访问该资源。如果重新开始目标线程的线程想在调用 <code>resume</code> 之前锁定该监视器,则会发生死锁。这类死锁通常会证明自己是“冻结”的进程。有关更多信息,请参阅<a href="../../../guide/misc/threadPrimitiveDeprecation.html">为何 Thread.stop、Thread.suspend 和 Thread.resume 遭到反对?</a>。</I><P><DD>挂起线程。<p>首先,调用线程的 <code>checkAccess</code> 方法,且不带任何参数。这可能抛出 <code>SecurityException</code>(在当前线程中)。<p>如果线程处于活动状态则被挂起,且不再有进一步的活动,除非重新开始。<P><DD><DL></DL></DD><DD><DL><DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果当前线程不能修改该线程。<DT><B>另请参见:</B><DD><A HREF="Thread.html#checkAccess()"><CODE>checkAccess()</CODE></A></DL></DD></DL><HR><A NAME="resume()"><!-- --></A><H3>resume</H3><PRE><FONT SIZE="-1"><A HREF="Deprecated.html" title="java.lang 中的注释">@Deprecated</A></FONT>public final void <B>resume</B>()</PRE><DL><DD><B>已过时。
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?