- - PR -
排他制御のテスト方法について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-09-06 18:29
お世話になっております。
現在、ファイルの作成、削除、読み込みを行うクラスを作成しております。 このクラスは複数のスレッドからアクセスされるため、ファイルの操作に 対して排他制御が必要と思っています。 排他制御としては Read/Write lock パターンが適用できるのではないか と考え、java.util.concurrent.locks.ReadWriteLockを利用しております。 そこで、排他制御が実現できているかをテストしたいのですが、 どうテストすればよいのか見当がついておりません。 このような排他制御について、テストする方法はありますでしょうか? よろしくお願いいたします。 |
|
投稿日時: 2007-09-06 20:05
複数のスレッドを作って試すしかないと思いますが、
タイミング制御のためにThread.sleep()を使用してみてはいかがでしょうか。 スレッド1:ロック取得後5秒間のスリープ スレッド2:5秒スリープしてからロック取得 のようにシナリオを大きな時間の単位で決めれば、 比較的楽に確認できると思います。 |
|
投稿日時: 2007-09-06 21:51
NIOのロック機構を使う方法であればOSレベルでロックを掛けるので、
(Windowsと仮定)エクスプローラでロック対象のファイルを開いた ままプログラムで排他ロックを書けるとエラーなり、ロック待ちなり します。 詳しくはこちらを↓ http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3247&forum=12 DIコンテナとか使っていると、テスト用のモッククラスの初期化処理または 初期化メソッド内でロックを掛けっぱなしにして、その後の処理を実行する という方法もあるかと思います。 |
|
投稿日時: 2007-09-07 09:27
私の場合はブレークポイントで停止させてステップ実行を利用して
気になるタイミングでの並列処理が正しく同期されているかを確認します。 |
1