• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:デッドロックに関して1)

デッドロックを起こすサンプルソースとJunitでのデッドロック作成方法

このQ&Aのポイント
  • デッドロックを起こすサンプルソースとして、Javaのスレッドプログラミングにおいてデッドロックを引き起こすソースコードを紹介します。
  • Junitでデッドロックを起こすサンプルを作成する方法として、MultithreadedTestCaseとControllableTestThreadの使用方法を解説します。
  • 英語が苦手でも理解しやすいアドバイスを提供します。デッドロックを理解し、Junitでのデッドロック作成に役立つ情報を提供します。

質問者が選んだベストアンサー

  • ベストアンサー
  • deadlock
  • ベストアンサー率67% (59/87)
回答No.1

まずは確認ですが、↓のサイトにあるクラスでいいですか? MultithreadedTestCaseの方はいくつか引っかかるので… http://www.mousepushers.com/java/mtjunit/doc/com/mousepushers/junit/MultithreadedTestCase.html ここにあるサンプルコードを見る限り、 1.ThreadA、ThreadBの親クラスをControllableTestThreadにする 4.ThreadAとThreadBのrunメソッドの中身を、testOKに移動 2.自分が作成するテストケースクラス(Deadlockクラス)は、MultithreadedTestCaseをextendsし、test~にサンプルコードを記述 3.サンプルコードにある、new TestThread~~を、ThreadAとThreadBに変更 5.ThreadA、ThreadBは、テストの実行結果をtestOk()メソッドの中で判定し、true/falseで返却 で移植そのものは終了です。 ただし、問題点は何を持って失敗/成功とするかですね。 デッドロックを起こすわけですから、ThreadA、ThreadBは停止してしまいますし… testOKメソッドの最後でフィールドに用意したフラグを必ずtrueにするようにしておいて、 そのフラグがfalseのままだったらまだ通過してないのでOKとかですかね。 getFailures()はこの場合使わないです。

space-girl
質問者

お礼

deadlockさん。 ありがとうございます(^-^)/ 返事が遅くなりまして、すみませんでした。 ご指摘のとおりのサイトです。 移植の方法を詳しく教えていただき ありがとうございます。 でも、ご指摘のとおり、 何を持って失敗/成功とするかですよね。 Junitでデッドロックを起こすサンプルを作って デッドロックが発生したという検証を行いたかったのですが・・・ 自分が意図していたものが こちらのクラスで実現できるのか。。。 自分の目的がイマイチはっきりしていないなか、 丁寧に回答していただき本当にありがとう ございます。 実際に、移植してみて どのような動きをするか 検証をしてみます。 今回は、ありがとうございました。(^-^)/

関連するQ&A