java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

java.util.concurrent.locks
类 ReentrantReadWriteLock.ReadLock

java.lang.Object
  继承者 java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock
所有已实现的接口:
Serializable, Lock
正在封闭类:
ReentrantReadWriteLock

public static class ReentrantReadWriteLock.ReadLock
extends Object
implements Lock, Serializable

ReentrantReadWriteLock.readLock() 方法返回的锁定。

另请参见:
序列化表格

构造方法摘要
protected ReentrantReadWriteLock.ReadLock(ReentrantReadWriteLock lock)
          子类使用的构造方法
 
方法摘要
 void lock()
          获取读取锁定。
 void lockInterruptibly()
          获取读取锁定,除非当前线程被中断
 Condition newCondition()
          因为 ReadLocks 不支持条件,所以将抛出 UnsupportedOperationException
 String toString()
          返回标识此锁定及其锁定状态的字符串。
 boolean tryLock()
          仅当写入锁定在调用期间未被另一个线程保持时获取读取锁定。
 boolean tryLock(long timeout, TimeUnit unit)
          如果另一个线程在给定的等待时间内没有保持写入锁定,并且当前线程未被中断,则获取读取锁定。
 void unlock()
          试图释放此锁定。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

ReentrantReadWriteLock.ReadLock

protected ReentrantReadWriteLock.ReadLock(ReentrantReadWriteLock lock)
子类使用的构造方法

参数:
lock - 外部锁定对象
抛出:
NullPointerException - 如果 lock 为 null
方法详细信息

lock

public void lock()
获取读取锁定。

如果另一个线程没有保持写入锁定,则获取读取锁定并立即返回。

如果另一个线程保持该写入锁定,出于线程调度目的,将禁用当前线程,并且在获取读取锁定之前,该线程将一直处于休眠状态。

指定者:
接口 Lock 中的 lock

lockInterruptibly

public void lockInterruptibly()
                       throws InterruptedException
获取读取锁定,除非当前线程被中断

如果另一个线程没有保持写入锁定,则获取读取锁定并立即返回。

如果另一个线程保持了该写入锁定,出于线程调度目的,将禁用当前线程,并且在发生以下两种情况之一以前,该线程将一直处于休眠状态:

  • 读取锁定由当前线程获得;或者
  • 其他某个线程中断当前线程。

如果当前线程:

  • 在进入此方法时已经设置了该线程的中断状态;或者
  • 在获取读取锁定时被中断
则抛出 InterruptedException,并且清除当前线程的已中断状态。

在此实现中,因为此方法是一个显式中断点,所以要优先考虑响应中断,而不是响应锁定的普通获取或重入获取。

指定者:
接口 Lock 中的 lockInterruptibly
抛出:
InterruptedException - 如果当前线程是已中断的。
另请参见:
Thread.interrupt()

tryLock

public boolean tryLock()
仅当写入锁定在调用期间未被另一个线程保持时获取读取锁定。

如果另一个线程没有保持写入锁定,则获取读取锁定并立即返回 true 值。即使已将此锁定设置为使用公平排序策略,但是调用 tryLock() 立即获取读取锁定(如果有可用的),不管其他线程当前是否正在等待该读取锁定。在某些情况下,此“闯入”行为可能很有用,即使它会打破公平性也如此。如果希望遵守此锁定的公平设置,则使用 tryLock(0, TimeUnit.SECONDS) ,它几乎是等效的(它也检测中断)。

如果写入锁定被另一个线程保持,则此方法将立即返回 false 值。

指定者:
接口 Lock 中的 tryLock
返回:
如果获取了读取锁定,则返回 true

tryLock

public boolean tryLock(long timeout,
                       TimeUnit unit)
                throws InterruptedException
如果另一个线程在给定的等待时间内没有保持写入锁定,并且当前线程未被中断,则获取读取锁定。

如果另一个线程没有保持写入锁定,则获取读取锁定并立即返回 true 值。如果已经设置此锁定使用公平的排序策略,并且其他线程都在等待该锁定,则不会 获取一个可用的锁定。这与 tryLock() 方法相反。如果想使用一个允许闯入公平锁定的定时 tryLock,那么可以将定时形式和不定时形式组合在一起:

if (lock.tryLock() || lock.tryLock(timeout, unit) ) { ... }
 

如果写入锁定被另一个线程保持,则出于线程调度目的,禁用当前线程,并且在发生以下三种情况之一以前,该线程将一直处于休眠状态:

  • 读取锁定由当前线程获得;或者
  • 其他某个线程中断当前线程;或者
  • 已超过指定的等待时间

如果获得了读取锁定,则返回 true 值。

如果当前线程:

  • 在进入此方法时已经设置了该线程的中断状态;或者
  • 在获取读取锁定时被中断
则抛出 InterruptedException,并且清除当前线程的已中断状态。

如果超出了指定的等待时间,则返回值为 false。如果该时间小于或等于 0,则此方法根本不会等待。

在此实现中,因为此方法是一个显式中断点,所以要优先考虑响应中断,而不是响应锁定的普通获取或重入获取,或者报告所用的等待时间。

指定者:
接口 Lock 中的 tryLock
参数:
timeou - 等待读取锁定的时间
unit - timeout 参数的时间单位
返回:
如果获取了读取锁定,则返回 true
抛出:
InterruptedException - 如果当前线程被中断
NullPointerException - 如果时间单位为 null
另请参见:
Thread.interrupt()

unlock

public void unlock()
试图释放此锁定。

如果读取者的数量目前为 0,则该锁定可用于写入锁定尝试。

指定者:
接口 Lock 中的 unlock

newCondition

public Condition newCondition()
因为 ReadLocks 不支持条件,所以将抛出 UnsupportedOperationException

指定者:
接口 Lock 中的 newCondition
返回:
用于此 Lock 实例的新 Condition 实例。
抛出:
UnsupportedOperationException - 总是如此

toString

public String toString()
返回标识此锁定及其锁定状态的字符串。括号中的状态包括字符串 "Read locks =",后跟读取锁定的数量。

覆盖:
Object 中的 toString
返回:
标识此锁定及其锁定状态的字符串。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策