reentrantreadwritelock.readlock.html
来自「j2se5-api-zh,java文档的中文版本」· HTML 代码 · 共 504 行 · 第 1/2 页
HTML
504 行
<p>如果另一个线程没有保持写入锁定,则获取读取锁定并立即返回。<p>如果另一个线程保持该写入锁定,出于线程调度目的,将禁用当前线程,并且在获取读取锁定之前,该线程将一直处于休眠状态。<P><DD><DL><DT><B>指定者:</B><DD>接口 <CODE><A HREF="Lock.html" title="java.util.concurrent.locks 中的接口">Lock</A></CODE> 中的 <CODE><A HREF="Lock.html#lock()">lock</A></CODE></DL></DD><DD><DL></DL></DD></DL><HR><A NAME="lockInterruptibly()"><!-- --></A><H3>lockInterruptibly</H3><PRE>public void <B>lockInterruptibly</B>() throws <A HREF="../../../lang/InterruptedException.html" title="java.lang 中的类">InterruptedException</A></PRE><DL><DD>获取读取锁定,除非当前线程被<A HREF="../../../lang/Thread.html#interrupt()"><CODE>中断</CODE></A>。<p>如果另一个线程没有保持写入锁定,则获取读取锁定并立即返回。<p>如果另一个线程保持了该写入锁定,出于线程调度目的,将禁用当前线程,并且在发生以下两种情况之一以前,该线程将一直处于休眠状态: <ul><li>读取锁定由当前线程获得;或者<li>其他某个线程<A HREF="../../../lang/Thread.html#interrupt()"><CODE>中断</CODE></A>当前线程。 </ul><p>如果当前线程: <ul><li>在进入此方法时已经设置了该线程的中断状态;或者<li>在获取读取锁定时被<A HREF="../../../lang/Thread.html#interrupt()"><CODE>中断</CODE></A>, </ul>则抛出 <A HREF="../../../lang/InterruptedException.html" title="java.lang 中的类"><CODE>InterruptedException</CODE></A>,并且清除当前线程的已中断状态。<p>在此实现中,因为此方法是一个显式中断点,所以要优先考虑响应中断,而不是响应锁定的普通获取或重入获取。<P><DD><DL><DT><B>指定者:</B><DD>接口 <CODE><A HREF="Lock.html" title="java.util.concurrent.locks 中的接口">Lock</A></CODE> 中的 <CODE><A HREF="Lock.html#lockInterruptibly()">lockInterruptibly</A></CODE></DL></DD><DD><DL><DT><B>抛出:</B><DD><CODE><A HREF="../../../lang/InterruptedException.html" title="java.lang 中的类">InterruptedException</A></CODE> - 如果当前线程是已中断的。<DT><B>另请参见:</B><DD><A HREF="../../../lang/Thread.html#interrupt()"><CODE>Thread.interrupt()</CODE></A></DL></DD></DL><HR><A NAME="tryLock()"><!-- --></A><H3>tryLock</H3><PRE>public boolean <B>tryLock</B>()</PRE><DL><DD>仅当写入锁定在调用期间未被另一个线程保持时获取读取锁定。<p>如果另一个线程没有保持写入锁定,则获取读取锁定并立即返回 <tt>true</tt> 值。即使已将此锁定设置为使用公平排序策略,但是调用 <tt>tryLock()</tt> 仍<em>将</em> 立即获取读取锁定(如果有可用的),不管其他线程当前是否正在等待该读取锁定。在某些情况下,此“闯入”行为可能很有用,即使它会打破公平性也如此。如果希望遵守此锁定的公平设置,则使用 <A HREF="ReentrantReadWriteLock.ReadLock.html#tryLock(long, java.util.concurrent.TimeUnit)"><CODE>tryLock(0, TimeUnit.SECONDS) </CODE></A>,它几乎是等效的(它也检测中断)。<p>如果写入锁定被另一个线程保持,则此方法将立即返回 <tt>false</tt> 值。<P><DD><DL><DT><B>指定者:</B><DD>接口 <CODE><A HREF="Lock.html" title="java.util.concurrent.locks 中的接口">Lock</A></CODE> 中的 <CODE><A HREF="Lock.html#tryLock()">tryLock</A></CODE></DL></DD><DD><DL><DT><B>返回:</B><DD>如果获取了读取锁定,则返回 <tt>true</tt>。</DL></DD></DL><HR><A NAME="tryLock(long, java.util.concurrent.TimeUnit)"><!-- --></A><H3>tryLock</H3><PRE>public boolean <B>tryLock</B>(long timeout, <A HREF="../TimeUnit.html" title="java.util.concurrent 中的枚举">TimeUnit</A> unit) throws <A HREF="../../../lang/InterruptedException.html" title="java.lang 中的类">InterruptedException</A></PRE><DL><DD>如果另一个线程在给定的等待时间内没有保持写入锁定,并且当前线程未被<A HREF="../../../lang/Thread.html#interrupt()"><CODE>中断</CODE></A>,则获取读取锁定。<p>如果另一个线程没有保持写入锁定,则获取读取锁定并立即返回 <tt>true</tt> 值。如果已经设置此锁定使用公平的排序策略,并且其他线程都在等待该锁定,则<em>不会</em> 获取一个可用的锁定。这与 <A HREF="ReentrantReadWriteLock.ReadLock.html#tryLock()"><CODE>tryLock()</CODE></A> 方法相反。如果想使用一个允许闯入公平锁定的定时 <tt>tryLock</tt>,那么可以将定时形式和不定时形式组合在一起: <pre>if (lock.tryLock() || lock.tryLock(timeout, unit) ) { ... } </pre><p>如果写入锁定被另一个线程保持,则出于线程调度目的,禁用当前线程,并且在发生以下三种情况之一以前,该线程将一直处于休眠状态: <ul><li>读取锁定由当前线程获得;或者<li>其他某个线程<A HREF="../../../lang/Thread.html#interrupt()"><CODE>中断</CODE></A>当前线程;或者<li>已超过指定的等待时间 </ul><p>如果获得了读取锁定,则返回 <tt>true</tt> 值。<p>如果当前线程: <ul><li>在进入此方法时已经设置了该线程的中断状态;或者<li>在获取读取锁定时被<A HREF="../../../lang/Thread.html#interrupt()"><CODE>中断</CODE></A>,</ul> 则抛出 <A HREF="../../../lang/InterruptedException.html" title="java.lang 中的类"><CODE>InterruptedException</CODE></A>,并且清除当前线程的已中断状态。<p>如果超出了指定的等待时间,则返回值为 <tt>false</tt>。如果该时间小于或等于 0,则此方法根本不会等待。<p>在此实现中,因为此方法是一个显式中断点,所以要优先考虑响应中断,而不是响应锁定的普通获取或重入获取,或者报告所用的等待时间。<P><DD><DL><DT><B>指定者:</B><DD>接口 <CODE><A HREF="Lock.html" title="java.util.concurrent.locks 中的接口">Lock</A></CODE> 中的 <CODE><A HREF="Lock.html#tryLock(long, java.util.concurrent.TimeUnit)">tryLock</A></CODE></DL></DD><DD><DL><DT><B>参数:</B><DD><CODE>timeou</CODE> - 等待读取锁定的时间<DD><CODE>unit</CODE> - timeout 参数的时间单位<DT><B>返回:</B><DD>如果获取了读取锁定,则返回 <tt>true</tt>。<DT><B>抛出:</B><DD><CODE><A HREF="../../../lang/InterruptedException.html" title="java.lang 中的类">InterruptedException</A></CODE> - 如果当前线程被中断<DD><CODE><A HREF="../../../lang/NullPointerException.html" title="java.lang 中的类">NullPointerException</A></CODE> - 如果时间单位为 null<DT><B>另请参见:</B><DD><A HREF="../../../lang/Thread.html#interrupt()"><CODE>Thread.interrupt()</CODE></A></DL></DD></DL><HR><A NAME="unlock()"><!-- --></A><H3>unlock</H3><PRE>public void <B>unlock</B>()</PRE><DL><DD>试图释放此锁定。 <p> 如果读取者的数量目前为 0,则该锁定可用于写入锁定尝试。<P><DD><DL><DT><B>指定者:</B><DD>接口 <CODE><A HREF="Lock.html" title="java.util.concurrent.locks 中的接口">Lock</A></CODE> 中的 <CODE><A HREF="Lock.html#unlock()">unlock</A></CODE></DL></DD><DD><DL></DL></DD></DL><HR><A NAME="newCondition()"><!-- --></A><H3>newCondition</H3><PRE>public <A HREF="Condition.html" title="java.util.concurrent.locks 中的接口">Condition</A> <B>newCondition</B>()</PRE><DL><DD>因为 <tt>ReadLocks</tt> 不支持条件,所以将抛出 <tt>UnsupportedOperationException</tt>。<P><DD><DL><DT><B>指定者:</B><DD>接口 <CODE><A HREF="Lock.html" title="java.util.concurrent.locks 中的接口">Lock</A></CODE> 中的 <CODE><A HREF="Lock.html#newCondition()">newCondition</A></CODE></DL></DD><DD><DL><DT><B>返回:</B><DD>用于此 <tt>Lock</tt> 实例的新 <A HREF="Condition.html" title="java.util.concurrent.locks 中的接口"><CODE>Condition</CODE></A> 实例。<DT><B>抛出:</B><DD><CODE><A HREF="../../../lang/UnsupportedOperationException.html" title="java.lang 中的类">UnsupportedOperationException</A></CODE> - 总是如此</DL></DD></DL><HR><A NAME="toString()"><!-- --></A><H3>toString</H3><PRE>public <A HREF="../../../lang/String.html" title="java.lang 中的类">String</A> <B>toString</B>()</PRE><DL><DD>返回标识此锁定及其锁定状态的字符串。括号中的状态包括字符串 "Read locks =",后跟读取锁定的数量。<P><DD><DL><DT><B>覆盖:</B><DD>类 <CODE><A HREF="../../../lang/Object.html" title="java.lang 中的类">Object</A></CODE> 中的 <CODE><A HREF="../../../lang/Object.html#toString()">toString</A></CODE></DL></DD><DD><DL><DT><B>返回:</B><DD>标识此锁定及其锁定状态的字符串。</DL></DD></DL><!-- ========= END OF CLASS DATA ========= --><HR><!-- ======= START OF BOTTOM NAVBAR ====== --><A NAME="navbar_bottom"><!-- --></A><A HREF="#skip-navbar_bottom" title="跳过导航链接"></A><TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""><TR><TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"><A NAME="navbar_bottom_firstrow"><!-- --></A><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> <TR ALIGN="center" VALIGN="top"> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>概述</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>软件包</B></FONT></A> </TD> <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>类</B></FONT> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ReentrantReadWriteLock.ReadLock.html"><FONT CLASS="NavBarFont1"><B>使用</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>树</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>已过时</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>索引</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>帮助</B></FONT></A> </TD> </TR></TABLE></TD><TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM><b>Java<sup><font size=-2>TM</font></sup> 2 Platform<br>Standard Ed. 5.0</b></EM></TD></TR><TR><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="ReentrantReadWriteLock.html" title="java.util.concurrent.locks 中的类"><B>上一个类</B></A> <A HREF="ReentrantReadWriteLock.WriteLock.html" title="java.util.concurrent.locks 中的类"><B>下一个类</B></A></FONT></TD><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../../../index.html@java_2Futil_2Fconcurrent_2Flocks_2FReentrantReadWriteLock.ReadLock.html" target="_top"><B>框架</B></A> <A HREF="ReentrantReadWriteLock.ReadLock.html" target="_top"><B>无框架</B></A> <SCRIPT type="text/javascript"> <!-- if(window==top) { document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>所有类</B></A>'); } //--></SCRIPT><NOSCRIPT> <A HREF="../../../../allclasses-noframe.html"><B>所有类</B></A></NOSCRIPT></FONT></TD></TR><TR><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 摘要: 嵌套 | 字段 | <A HREF="#constructor_summary">构造方法</A> | <A HREF="#method_summary">方法</A></FONT></TD><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">详细信息: 字段 | <A HREF="#constructor_detail">构造方法</A> | <A HREF="#method_detail">方法</A></FONT></TD></TR></TABLE><A NAME="skip-navbar_bottom"></A><!-- ======== END OF BOTTOM NAVBAR ======= --><HR><font size="-1"><a href="../../../../../../../../../../java.sun.com/cgi-bin/bugreport.cgi">提交错误或意见</a><br>有关更多的 API 参考资料和开发人员文档,请参阅 <a href="../../../../../../../../../../java.sun.com/j2se/1.5.0/docs/relnotes/devdocs-vs-specs.html">Java 2 SDK SE 开发人员文档</a>。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。 <p>版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守<a href="../../../../../../../../../../java.sun.com/j2se/1.5.0/docs/relnotes/license.html">许可证条款</a>。另请参阅<a href="../../../../../../../../../../java.sun.com/docs/redist.html">文档重新分发政策</a>。</font></BODY></HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?