Jtest -Java対応自動テストツール-
今月のピックアップ
Parasoft Jtest 8.4 技術資料
「マルチスレッドプログラミング」
注意すべき点
マルチスレッドプログラミングは、つぎのような問題を伴う可能性があります。これらの問題は適切に設計、コーディングされていれば防げる問題です。
- デッドロック
- 排他制御が正しくないために、スレッド間で依存するロックを保持したまま、互いがもつリソースの解除を待ち続けることで、処理を続けられなくなること。
- レース・コンディション
- データ・レースともいう。排他制御が正しくないために、複数のスレッドが同一の共有リソースにアクセスした場合に、意図しないデータ変更、振る舞いが発生すること。セキュリティ脆弱性の観点からは、情報のインテグリティが損なわれる問題(「IPA セキュアプログラミング講座」による)として捉えることができる。
notify通知の消失
例)notifyAll()でなくnotify()による通知を行ったために、本来意図したスレッドに通知が届かず、結果的にその通知が失われてしまうこと。
- 無限ループ
- 例)ループ内でキャッチされた例外が適切にハンドルされないことで、そのループからブレイクできなくなり、無限ループに陥ること。
今後の課題は、マルチスレッドプログラミングに取り組む開発者がいかに既存のプログラムを安全なプログラムに作り変えるかということです。
Parasoft Jtest 8.4 は、マルチスレッドプログラミングを支援する多くのルールを搭載することで、この問題へのソリューションを提供します。
ここでは、いくつかの例を用いて開発時に直面する可能性のある問題とJtestを使用してどのようにその問題を検出するか説明していきます。
Parasoft Jtest 8.4 は、マルチスレッドプログラミングを支援する多くのルールを搭載することで、この問題へのソリューションを提供します。
ここでは、いくつかの例を用いて開発時に直面する可能性のある問題とJtestを使用してどのようにその問題を検出するか説明していきます。









