EeBlog(テクニカルブログ) :Javaワンポイント

第52回 シンクロナイザ編 Semaphore

今回のテーマは「Semaphore」です。

セマフォとは複数のプロセスが共有資源を利用する際に、その資源に同時にアクセスされるのを防ぐために使用される排他制御方法です。 1つのプロセスのみがアクセスできる2値セマフォと、複数のプロセスがアクセスできる計数セマフォがあります。 Semaphoreは同時に実行できるスレッドの数を制限する計数セマフォです。 acquire メソッドは実行権を取得するメソッドです。 実行可能数のスレッドがacquire メソッドを実行している場合において他のスレッドがacquire メソッドを実行するとブロックされます。 releaseメソッドは実行権を返却するメソッドです。 また、Semaphoreのコンストラクタの第2引数は公平性を設定します。 公平性が true に設定されると、acquire メソッドを実行したスレッドがその実行順で実行権を取得すること保証します。

(さらに…)

第51回 シンクロナイザ編 CyclicBarrier

今回のテーマは「CyclicBarrier」です。

CyclicBarrierはスレッドセットのそれぞれが共通のバリアポイントに達するまで待機することを可能にする同期化支援機能です。 指定された数のスレッドがawaitメソッドを実行するまで待機させることができます。 CountDownLatchは繰り返し使用することができませんが、CyclicBarrierは待機中のスレッドが解放されたあとで再利用できます。

(さらに…)

第50回 シンクロナイザ編 CountDownLatch

今回のテーマは「CountDownLatch」です。

CountDownLatchは他のスレッドで実行中の操作セットが完了するまで、1 つ以上のスレッドを待機可能にする同期化支援機能です。 CountDownLatchは指定されたカウントを使用して初期化されます。 このカウントはcountDownメソッドの実行により減算し、カウントがゼロになるまでスレッドを待機させることができる仕組みになっています。

(さらに…)