呼び出しに対しては適切なロック解除処理を行うことが期待される。ソースコード(リスト3)を見て欲しい。以下でこのようなインターフェースを持った4種類のロックの実装を検討する*。デモプログラムではもう一種類のロック(DummyLock)が使用できる。これは全てのメソッドが空の、全く排他制御を行わない実装である。デモプログラムを実行すると時折壊れたグラフが表示され、データ破壊が起っているのがわかる。ブロックのような単純な仕組みでは実装できないので、ウェイトセットを利用したロック機構を使用する。ソースコード(リスト4)を見てみよう。基本的なテクニックなのであらためて詳細は説明しないが、以下に簡単にその仕組みを説明する。ロックを利用するスレッドはこのフラグを見て、処理(読み込みまたは書き込みのデータアクセス)を続行するかウェイトセットに入って待つ(wait())かを決める。フラグを立て、処理が終わればフラグを戻す。ウェイトセットで待っている他のスレッド達を起こす(notifyAll())。ロックを獲得できたスレッドが処理を続行する。中で待たされるため、常に一つのスレッドだけがデータを処理する。使うことでデータにアクセスできるスレッドは一度に一つだけとなり、全てのデータアクセスが排他制御されることになる。