JavaTM 2 Platform
Std. Ed. v1.3

javax.swing.text
クラス AbstractDocument

java.lang.Object
  |
  +--javax.swing.text.AbstractDocument
すべての実装インタフェース:
Document, Serializable
直系の既知のサブクラス:
DefaultStyledDocument, PlainDocument

public abstract class AbstractDocument
extends Object
implements Document, Serializable

ドキュメントインタフェースの実装であり、各種のドキュメントを実装するときのベースになります。このレベルではポリシーがごくわずかなので、それに応じて使用が難しくなります。

このクラスは、ドキュメントのロック機構を実装します。この機構によって、複数の読み込みまたはひとつの書き込みを扱えるようになり、複数の書き込みがあっても、ドキュメントのオブザーバ全員に以前の変更が通知されるまで、ドキュメントに別の変更を加えることができません。読み込みロックの取得および解放には、render メソッドを使います。書き込みロックは、ドキュメントを変更するメソッドによって取得され、そのメソッド呼び出しの間は保持されます。通知は、ドキュメントを変更するスレッド上で行われます。このスレッドは、通知の間はドキュメントへの完全な読み込みアクセス権を持っています。一方で、その他の書き込み側は、通知が完了するまではアクセスを許されません。通知は Beans イベント通知であり、すべてのリスナーが通知を受け取るまでは他の変更を許可しません。

このクラスからサブクラス化された任意のモデルで、BasicTextUI から派生した Look & Feel の実装を持つテキストコンポーネントと関連して使用されるものは、安全に非同期に更新されます。これは、ドキュメントのタイプが AbstractDocument の場合には、View 階層へのすべてのアクセスが BasicTextUI によって直列化されるからです。ロック機構では、独立したスレッドの View 階層へのアクセスは必ず DocumentListener メソッドを介して行われ、また、ある 1 つの時点にはアクティブなスレッドは 1 つしか存在しないと見なします。

同期のサポートが必要な場合は、さらに次の前提条件があります。任意の DocumentListener および UndoListener の実装に対するコードパスがスレッドに対して安全であること、また、デッドロックを避ける場合には、コンポーネントのロックにアクセスしないこと、という条件です。JComponent の repaint メソッドおよび revalidate メソッドは安全です。

AbstractDocument はドキュメントの最後に暗黙のブレークをモデル化します。さまざまなことが可能ですが、その 1 つとして最後の文字のあとにキャレットを配置できます。その結果、Content より短い getLength を返します。独自の Content を生成する場合は、文字を追加して初期化するようにしてください。この例については StringContent と GapContent を参照してください。別の前提条件は、暗黙の最終文字をモデル化する Elements は endOffset == (getLength() + 1) となることです。たとえば、DefaultStyledDocument の場合は getParagraphElement(getLength()).getEndOffset() == getLength() + 1 です。

警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。現在の直列化のサポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。今後の Swing リリースでは、長期間の持続性をサポートする予定です。

関連項目:
直列化された形式

内部クラスの概要
 class AbstractDocument.AbstractElement
          要素の抽象的な部分を実装します。
static interface AbstractDocument.AttributeContext
          このインタフェースは、プラグイン可能な属性圧縮手法を MutableAttributeSet の実装で使用可能にするために使用できます。
 class AbstractDocument.BranchElement
          他の要素を含む複合要素を実装します。
static interface AbstractDocument.Content
          編集可能な文字のシーケンスを示すインタフェースです。
 class AbstractDocument.DefaultDocumentEvent
          ドキュメントが変更されるときに、変更を格納します。
static class AbstractDocument.ElementEdit
          ドキュメントのイベントに追加できる ElementChange の実装です。
 class AbstractDocument.LeafElement
          内容を直接に表示する要素を実装します。
 
フィールドの概要
protected static String BAD_LOCATION
          不正な位置を示すエラーメッセージです。
static String BidiElementName
          一方向の実行を示す要素の名前です。
static String ContentElementName
          内容を示す要素の名前です。
static String ElementNameAttribute
          要素の名前の指定に使う属性の名前です。
protected  EventListenerList listenerList
          ドキュメントのイベントリスナーです。
static String ParagraphElementName
          段落を示す要素の名前です。
static String SectionElementName
          行、段落などのセクションを示す要素の名前です。
 
インタフェース javax.swing.text.Document から継承したフィールド
StreamDescriptionProperty, TitleProperty
 
コンストラクタの概要
protected AbstractDocument(AbstractDocument.Content data)
          なんらかの内容記憶機構をラップした、新しい AbstractDocument を構築します。
protected AbstractDocument(AbstractDocument.Content data, AbstractDocument.AttributeContext context)
          なんらかの内容記憶機構をラップした、新しい AbstractDocument を構築します。
 
メソッドの概要
 void addDocumentListener(DocumentListener listener)
          ドキュメントリスナーを追加し、変更があったときに通知されるようにします。
 void addUndoableEditListener(UndoableEditListener listener)
          任意の変更を通知するアンドゥリスナーを追加します。
protected  Element createBranchElement(Element parent, AttributeSet a)
          ドキュメントの枝の要素を作成します。
protected  Element createLeafElement(Element parent, AttributeSet a, int p0, int p1)
          ドキュメントの葉の要素を作成します。
 Position createPosition(int offs)
          ドキュメントが変更されたときに、変更を追跡する位置を返します。
 void dump(PrintStream out)
          診断用のダンプを出力します。
protected  void fireChangedUpdate(DocumentEvent e)
          このイベントタイプへの通知を配信対象に登録しているリスナーをすべて通知します。
protected  void fireInsertUpdate(DocumentEvent e)
          このイベントタイプへの通知を配信対象に登録しているリスナーをすべて通知します。
protected  void fireRemoveUpdate(DocumentEvent e)
          このイベントタイプへの通知を配信対象に登録しているリスナーをすべて通知します。
protected  void fireUndoableEditUpdate(UndoableEditEvent e)
          このイベントタイプへの通知を配信対象に登録しているリスナーをすべて通知します。
 int getAsynchronousLoadPriority()
          非同期ロードの優先順位を取得します。
protected  AbstractDocument.AttributeContext getAttributeContext()
          属性を管理するためのコンテキストを返します。
 Element getBidiRootElement()
          ドキュメントの双方向構造のルート要素を返します。
protected  AbstractDocument.Content getContent()
          ドキュメントの内容を返します。
protected  Thread getCurrentWriter()
          現在の書き込みスレッドがあれば、それを返します。
abstract  Element getDefaultRootElement()
          ルート要素を返します。
 Dictionary getDocumentProperties()
          プロパティのセットの管理をサポートします。
 Position getEndPosition()
          ドキュメントの末尾を表す位置を返します。
 int getLength()
          データの長さを返します。
 EventListener[] getListeners(Class listenerType)
          このモデルに追加された、指定されたタイプのリスナーすべての配列を返します。
abstract  Element getParagraphElement(int pos)
          指定された位置を含む段落要素を返します。
 Object getProperty(Object key)
          プロパティの値を調べるのに便利なメソッドです。
 Element[] getRootElements()
          定義されているルート要素をすべて返します。
 Position getStartPosition()
          ドキュメントの先頭を表す位置を返します。
 String getText(int offset, int length)
          ドキュメントからテキストのシーケンスを取得します。
 void getText(int offset, int length, Segment txt)
          ドキュメントからテキストを取得しますが、コピーは作成しません。
 void insertString(int offs, String str, AttributeSet a)
          ドキュメントに内容を挿入します。
protected  void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
          テキスト挿入の結果として、ドキュメントの構造を更新します。
protected  void postRemoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
          テキスト削除の結果として、任意のドキュメントの構造を更新します。
 void putProperty(Object key, Object value)
          プロパティの値を格納するのに便利なメソッドです。
 void readLock()
          ロックを取得して、ドキュメントからなんらかの状態の読み込みを開始できるようにします。
 void readUnlock()
          読み込みのロックを解除します。
 void remove(int offs, int len)
          ドキュメントから内容を削除します。
 void removeDocumentListener(DocumentListener listener)
          リスナーを削除します。
 void removeUndoableEditListener(UndoableEditListener listener)
          アンドゥリスナーを削除します。
protected  void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
          テキスト削除の結果として、任意のドキュメントの構造を更新します。
 void render(Runnable r)
          モデルが非同期的な更新をサポートしている場合、並行性に直面してモデルを安全に描画できるようにします。
 void setAsynchronousLoadPriority(int p)
          非同期ロードの優先順位を設定します。
 void setDocumentProperties(Dictionary x)
          このドキュメントのドキュメントプロパティの辞書を置き換えます。
protected  void writeLock()
          ロックを取得して、ロックが保護しているドキュメントの変更を開始できるようにします。
protected  void writeUnlock()
          書き込み操作が終了したときに、保持されていた書き込みロックを解放します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

listenerList

protected EventListenerList listenerList
ドキュメントのイベントリスナーです。

BAD_LOCATION

protected static final String BAD_LOCATION
不正な位置を示すエラーメッセージです。

ParagraphElementName

public static final String ParagraphElementName
段落を示す要素の名前です。

ContentElementName

public static final String ContentElementName
内容を示す要素の名前です。

SectionElementName

public static final String SectionElementName
行、段落などのセクションを示す要素の名前です。

BidiElementName

public static final String BidiElementName
一方向の実行を示す要素の名前です。

ElementNameAttribute

public static final String ElementNameAttribute
要素の名前の指定に使う属性の名前です。
コンストラクタの詳細

AbstractDocument

protected AbstractDocument(AbstractDocument.Content data)
なんらかの内容記憶機構をラップした、新しい AbstractDocument を構築します。
パラメータ:
data - コンテンツ

AbstractDocument

protected AbstractDocument(AbstractDocument.Content data,
                           AbstractDocument.AttributeContext context)
なんらかの内容記憶機構をラップした、新しい AbstractDocument を構築します。
パラメータ:
data - コンテンツ
context - 属性のコンテキスト
メソッドの詳細

getDocumentProperties

public Dictionary getDocumentProperties()
プロパティのセットの管理をサポートします。呼び出し側は、ドキュメントプロパティの辞書を使用して、ドキュメント全体に関するプロパティの注釈を付加できます。
戻り値:
null 以外の辞書
関連項目:
setDocumentProperties(java.util.Dictionary)

setDocumentProperties

public void setDocumentProperties(Dictionary x)
このドキュメントのドキュメントプロパティの辞書を置き換えます。
パラメータ:
x - 新規辞書
関連項目:
getDocumentProperties()

fireInsertUpdate

protected void fireInsertUpdate(DocumentEvent e)
このイベントタイプへの通知を配信対象に登録しているリスナーをすべて通知します。fire メソッドに渡されたパラメータを使用して、イベントのインスタンスはゆっくりと生成されます。
パラメータ:
e - イベント
関連項目:
EventListenerList

fireChangedUpdate

protected void fireChangedUpdate(DocumentEvent e)
このイベントタイプへの通知を配信対象に登録しているリスナーをすべて通知します。fire メソッドに渡されたパラメータを使用して、イベントのインスタンスはゆっくりと生成されます。
パラメータ:
e - イベント
関連項目:
EventListenerList

fireRemoveUpdate

protected void fireRemoveUpdate(DocumentEvent e)
このイベントタイプへの通知を配信対象に登録しているリスナーをすべて通知します。fire メソッドに渡されたパラメータを使用して、イベントのインスタンスはゆっくりと生成されます。
パラメータ:
e - イベント
関連項目:
EventListenerList

fireUndoableEditUpdate

protected void fireUndoableEditUpdate(UndoableEditEvent e)
このイベントタイプへの通知を配信対象に登録しているリスナーをすべて通知します。fire メソッドに渡されたパラメータを使用して、イベントのインスタンスはゆっくりと生成されます。
パラメータ:
e - イベント
関連項目:
EventListenerList

getListeners

public EventListener[] getListeners(Class listenerType)
このモデルに追加された、指定されたタイプのリスナーすべての配列を返します。
戻り値:
このモデルから listenerType 通知を受け取ったすべてのオブジェクト
導入されたバージョン:
1.3

getAsynchronousLoadPriority

public int getAsynchronousLoadPriority()
非同期ロードの優先順位を取得します。0 より小さい値の場合、ドキュメントは非同期にはロードされません。

setAsynchronousLoadPriority

public void setAsynchronousLoadPriority(int p)
非同期ロードの優先順位を設定します。

render

public void render(Runnable r)
モデルが非同期的な更新をサポートしている場合、並行性に直面してモデルを安全に描画できるようにします。指定された実行可能ファイルは、その実行中に何の変更もなくモデルを安全に読み取る方法で実行されます。実行可能ファイルは、それ自身で変更を加えることはできません。

この実装は、実行している間、読み込みロックを取得するためのものです。複数を同時に実行している場合、アクティブに描画中のオブジェクトがある間は、すべての書き込みがブロックされます。オブジェクトが例外をスローした場合、そのロックは安全に解放されます。決して終了しないオブジェクトに対する保護はなく、事実上、ドキュメントは自身が存在する間ずっとロックされます。

指定されたオブジェクトがどのような変更を試みても、デッドロックが発生します。この状況を検知できるようにするために個々の描画スレッドを追跡することはできません。また、サブクラスは、描画スレッドの追跡、およびエラーのスローのオーバーヘッドを発生させる可能性があります。

このメソッドはスレッドに対して安全ですが、ほとんどの Swing メソッドは違います。詳細は、「Threads and Swing」を参照してください。

定義:
インタフェース Document 内の render
パラメータ:
r - 実行するレンダリング

getLength

public int getLength()
データの長さを返します。ユーザのデータを示す内容の文字数です。
定義:
インタフェース Document 内の getLength
戻り値:
長さ >= 0
関連項目:
Document.getLength()

addDocumentListener

public void addDocumentListener(DocumentListener listener)
ドキュメントリスナーを追加し、変更があったときに通知されるようにします。
定義:
インタフェース Document 内の addDocumentListener
パラメータ:
listener - リスナー
関連項目:
Document.addDocumentListener(javax.swing.event.DocumentListener)

removeDocumentListener

public void removeDocumentListener(DocumentListener listener)
リスナーを削除します。
定義:
インタフェース Document 内の removeDocumentListener
パラメータ:
listener - リスナー
関連項目:
Document.removeDocumentListener(javax.swing.event.DocumentListener)

addUndoableEditListener

public void addUndoableEditListener(UndoableEditListener listener)
任意の変更を通知するアンドゥリスナーを追加します。UndoableEdit で実行される「元に戻す/再実行」操作は、適切な DocumetnEvent を発生させて、ビュー (複数の場合もあり) をモデルと同期させます。
定義:
インタフェース Document 内の addUndoableEditListener
パラメータ:
listener - リスナー
関連項目:
Document.addUndoableEditListener(javax.swing.event.UndoableEditListener)

removeUndoableEditListener

public void removeUndoableEditListener(UndoableEditListener listener)
アンドゥリスナーを削除します。
定義:
インタフェース Document 内の removeUndoableEditListener
パラメータ:
listener - リスナー
関連項目:
Document.removeDocumentListener(javax.swing.event.DocumentListener)

getProperty

public final Object getProperty(Object key)
プロパティの値を調べるのに便利なメソッドです。これは以下と同等です。
 getDocumentProperties().get(key);
 
定義:
インタフェース Document 内の getProperty
パラメータ:
key - null 以外のプロパティキー
戻り値:
このプロパティの値または null
関連項目:
getDocumentProperties()

putProperty

public final void putProperty(Object key,
                              Object value)
プロパティの値を格納するのに便利なメソッドです。これは以下と同等です。
 getDocumentProperties().put(key, value);
 
値が null の場合、このメソッドはプロパティを削除します。
定義:
インタフェース Document 内の putProperty
パラメータ:
key - null 以外のキー
value - 値
関連項目:
getDocumentProperties()

remove

public void remove(int offs,
                   int len)
            throws BadLocationException
ドキュメントから内容を削除します。内容の削除によって、実際の変更が起きるまでの書き込みロックが発生します。オブザーバは、このメソッドを呼び出したスレッド上で変更の通知を受けます。

このメソッドはスレッドに対して安全ですが、ほとんどの Swing メソッドは違います。詳細は、「Threads and Swing」を参照してください。

定義:
インタフェース Document 内の remove
パラメータ:
offs - オフセット開始 >= 0
len - 削除対象の文字数 >= 0
例外:
BadLocationException - 指定された削除の位置が、ドキュメント内の有効な位置ではない場合
関連項目:
Document.remove(int, int)

insertString

public void insertString(int offs,
                         String str,
                         AttributeSet a)
                  throws BadLocationException
ドキュメントに内容を挿入します。内容の挿入によって、実際の変更が起きるまでは書き込みロックが保持されます。そのあとで、書き込みロックをグラブしているスレッド上のオブザーバに通知が行われます。

このメソッドはスレッドに対して安全ですが、ほとんどの Swing メソッドは違います。詳細は、「Threads and Swing」を参照してください。

定義:
インタフェース Document 内の insertString
パラメータ:
offs - オフセット開始 >= 0
str - 挿入する文字列。null や空の文字列の場合は何もしない
a - 挿入されたコンテンツの属性
例外:
BadLocationException - 指定された挿入の位置が、ドキュメント内の有効な位置ではない場合
関連項目:
Document.insertString(int, java.lang.String, javax.swing.text.AttributeSet)

getText

public String getText(int offset,
                      int length)
               throws BadLocationException
ドキュメントからテキストのシーケンスを取得します。
定義:
インタフェース Document 内の getText
パラメータ:
offset - オフセット開始 >= 0
length - 検索対象の文字数 >= 0
戻り値:
テキスト
例外:
BadLocationException - 指定された範囲に、ドキュメント内では無効な位置が含まれる場合
関連項目:
Document.getText(int, int)

getText

public void getText(int offset,
                    int length,
                    Segment txt)
             throws BadLocationException
ドキュメントからテキストを取得しますが、コピーは作成しません。指定された Segment に返された文字配列は、変更しないでください。ドキュメントの文字に対するこうしたアクセス方法は、描画をより効率的にするために提供されています。呼び出し側は、返された文字配列の寿命について想定しないでください。文字配列を描画以外に使う必要がある場合は、その文字配列をコピーします。
定義:
インタフェース Document 内の getText
パラメータ:
offset - オフセット開始 >= 0
length - 検索対象の文字数 >= 0
txt - テキストを取得する Segment オブジェクト
例外:
BadLocationException - 指定された範囲に、ドキュメント内では無効な位置が含まれる場合

createPosition

public Position createPosition(int offs)
                        throws BadLocationException
ドキュメントが変更されたときに、変更を追跡する位置を返します。

このメソッドはスレッドに対して安全ですが、ほとんどの Swing メソッドは違います。詳細は、「Threads and Swing」を参照してください。

定義:
インタフェース Document 内の createPosition
パラメータ:
offs - モデル内の位置 >= 0
戻り値:
位置
例外:
BadLocationException - 指定された位置が、関連したドキュメント内の有効な位置を表さない場合
関連項目:
Document.createPosition(int)

getStartPosition

public final Position getStartPosition()
ドキュメントの先頭を表す位置を返します。返された位置は、変更を追跡してドキュメントの先頭に常に位置するために利用できます。
定義:
インタフェース Document 内の getStartPosition
戻り値:
位置

getEndPosition

public final Position getEndPosition()
ドキュメントの末尾を表す位置を返します。返された位置は、変更を追跡してドキュメントの末尾に常に位置するために利用できます。
定義:
インタフェース Document 内の getEndPosition
戻り値:
位置

getRootElements

public Element[] getRootElements()
定義されているルート要素をすべて返します。通常、ルート要素は 1 つしかありません。そのため、デフォルトの実装ではデフォルトルート要素が返されます。
定義:
インタフェース Document 内の getRootElements
戻り値:
ルート要素

getDefaultRootElement

public abstract Element getDefaultRootElement()
ルート要素を返します。要素の構造にビューを割り当てる別の機構が提供されない限り、このルート要素がビューのベースになります。
定義:
インタフェース Document 内の getDefaultRootElement
戻り値:
ルート要素
関連項目:
Document.getDefaultRootElement()

getBidiRootElement

public Element getBidiRootElement()
ドキュメントの双方向構造のルート要素を返します。このルート要素の子は、指定された Unicode 双方向構造レベルの文字の並びを示します。

getParagraphElement

public abstract Element getParagraphElement(int pos)
指定された位置を含む段落要素を返します。サブクラスは、何が段落を構成するものであるのかを自身で定義しなければなりません。そのときは、段落を構成するものが、少なくともテキストのチャンクであって、それに対して Unicode の双方向アルゴリズムを実行できる必要があることに注意してください。
パラメータ:
pos - オフセット開始 >= 0
戻り値:
要素

getAttributeContext

protected final AbstractDocument.AttributeContext getAttributeContext()
属性を管理するためのコンテキストを返します。このメソッドは、AttributeSet の情報の圧縮に使われる方法を事実上確立します。
戻り値:
コンテキスト

insertUpdate

protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng,
                            AttributeSet attr)
テキスト挿入の結果として、ドキュメントの構造を更新します。この処理は、書き込みロックの中で発生します。このクラスのサブクラスがこのメソッドを再び実装した場合は、スーパークラスにも処理を委譲します。
パラメータ:
chng - 変更の説明
attr - 変更の属性

removeUpdate

protected void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
テキスト削除の結果として、任意のドキュメントの構造を更新します。このメソッドの呼び出しは、テキストが Content から実際に削除される以前に実行されます。この処理は、書き込みロックの中で発生します。このクラスのサブクラスがこのメソッドを再び実装した場合は、スーパークラスにも処理を委譲します。
パラメータ:
chng - 変更の説明

postRemoveUpdate

protected void postRemoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
テキスト削除の結果として、任意のドキュメントの構造を更新します。このメソッドの呼び出しは、テキストが Content から実際に削除されたあとに実行されます。この処理は、書き込みロックの中で発生します。このクラスのサブクラスがこのメソッドを再び実装した場合は、スーパークラスにも処理を委譲します。
パラメータ:
chng - 変更の説明

dump

public void dump(PrintStream out)
診断用のダンプを出力します。
パラメータ:
out - 出力ストリーム

getContent

protected final AbstractDocument.Content getContent()
ドキュメントの内容を返します。
戻り値:
コンテンツ

createLeafElement

protected Element createLeafElement(Element parent,
                                    AttributeSet a,
                                    int p0,
                                    int p1)
ドキュメントの葉の要素を作成します。ドキュメントの構造を示すために作成される要素のフックです。この実装が構造と内容を分離したままに保つので、内容の拡大に応じて要素が自動的に成長し、それに既存の要素の分岐 (枝) が続きます。使用される要素の型に柔軟性を与えるように要素を生成する方法については、ドキュメント自体で決定する必要があります。
パラメータ:
parent - 親要素
a - 要素の属性
p0 - 範囲の始点 >= 0
p1 - 範囲の終点 >= p0
戻り値:
新規要素

createBranchElement

protected Element createBranchElement(Element parent,
                                      AttributeSet a)
ドキュメントの枝の要素を作成します。この要素には、他の要素 (複数可) を含めることができます。
パラメータ:
parent - 親要素
a - 属性
戻り値:
要素

getCurrentWriter

protected final Thread getCurrentWriter()
現在の書き込みスレッドがあれば、それを返します。メソッドが既存の変更の一部として呼び出されているかどうか、あるいは、ロックを取得して新しいトランザクションを開始する必要があるかどうかを区別するために使えます。
戻り値:
ドキュメントを変更しているアクティブなスレッド。進行中の変更がない場合は null

writeLock

protected final void writeLock()
ロックを取得して、ロックが保護しているドキュメントの変更を開始できるようにします。ロックの取得は、書き込み、変更の通知、あるいは読み込みが行われている間はできません。
例外:
IllegalStateException - 不正なロックを試みた場合にスローされる。ドキュメントが適切に実装されていれば、ドキュメントリスナーがドキュメントの変更を試みた場合に限りこの例外が発生する。こうした状況は、Bean イベントモデルに違反している。このイベントモデルでは配信の順序に保証はなく、変更が許可される前に、すべてのリスナーに通知される必要がある。

writeUnlock

protected final void writeUnlock()
書き込み操作が終了したときに、保持されていた書き込みロックを解放します。新しい書き込み側、あるいは読み込み側がロックを取得できるようになります。

readLock

public final void readLock()
ロックを取得して、ドキュメントからなんらかの状態の読み込みを開始できるようにします。複数のリーダが同時に存在できます。リスナーに対する変更の通知が完了するまで書き込みは読み込みをブロックします。ドキュメントロックが誤って取得されないように、このメソッドは注意深く使用する必要があります。readLock メソッドと同じ数だけ、readUnlock を呼び出してください。
関連項目:
readUnlock()

readUnlock

public final void readUnlock()
読み込みのロックを解除します。読み込みの 1 つが完了したことを通知します。他にリーダがなければ、書き込みを再開できます。このメソッドの呼び出し回数は、readLock の呼び出し回数と同じにする必要があるので、これを保証するために finally 文の中で使います。次に例を示します。

     readLock();
     try {
         // do something
     } finally {
         readUnlock();
     }
 
関連項目:
readLock()

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.