正答3
解説
正解は3です。
スレッドセーフとは、複数のスレッドから同時に呼び出されても正しく動作する性質のことです。
共有データへのアクセスを排他制御するなどして、データの不整合や競合が起きないように作られています。
【選択肢別解説】
1:× 複数のスレッドから呼び出されないようにすることは、スレッドセーフの説明ではありません。
スレッドセーフは複数スレッドから呼び出されることを前提とします。
2:× 単一のスレッドで動作させることは、並列実行を避ける運用です。
並列に実行しても問題が生じない性質であるスレッドセーフとは異なります。
3:○ 複数のスレッドで並列に実行しても、共有資源の競合による誤動作が生じないことが、スレッドセーフの定義です。
4:× 競合が発生したときにアプリケーションを安全に停止させることは、異常時の処理(フェールセーフ)に近い考え方です。
競合があっても正しく動くことがスレッドセーフです。
【ポイント】
スレッドセーフにする手段として、ロックによる排他制御や、共有データをもたない設計があります。
似た用語のリエントラント(再入可能)は、実行中に再び呼び出されても正しく動く性質です。