EeBlog(テクニカルブログ)
:Javaワンポイント
今回のテーマは「Lock」です。
synchronizedによるオブジェクトのロックのほかに、Lockインターフェースを利用し、より柔軟な排他制御を行うことができます。 Lockインターフェースを実装するクラスにはReentrantLockなどがあります。 lockメソッドによりロックを取得し、unlockメソッドによりロックを開放します。 通常はlockメソッドの実行直後にtryブロックを続け、finallyブロックでunlockメソッドを実行します。
次のサンプルコードは数値を格納するリストクラスです。 内部で奇数と偶数を区別して保持します。(J2SE5.0以上対応) (さらに…)
2008年6月3日 | カテゴリー:Javaワンポイント
今回のテーマは「synchronized」です。
Javaのオブジェクトにはロックが1つ用意されています。 スレッドはsynchronizedメソッドまたはsynchronized文を実行する場合に、そのオブジェクトのロックを取得しようとします。 スレッドがロックを取得しようとする場合において、他のスレッドがそのロックを取得しているときは、ロック待ちの状態になります。 したがって、1度に同じオブジェクトのsynchronizedメソッドまたはsynchronized文の処理を実行できるのは1つのスレッドのみです。 このような排他処理において、他のスレッドの排他処理を待つといったことを実現するために、waitメソッド、notifyメソッド、notifyAllメソッドがあります。 (さらに…)
2008年5月27日 | カテゴリー:Javaワンポイント
今回のテーマは「Exchanger」です。
Exchangerはスレッドをペアにして、ペア内の要素を交換することができます。
次のサンプルコードはスレッド間でインスタンスを交換するプログラムです。(J2SE5.0以上対応)
(さらに…)
2008年5月20日 | カテゴリー:Javaワンポイント