マルチスレッドにおいて考えないといけない一つがスレッドセーフ
スレッドセーフとはマルチスレッド環境で、ライブラリやプログラム、クラスなどが複数のスレッドから同時に利用されても正常に動作すること。(IT用語辞典)
よく考えているつもりであっても、おいおいミスをしてしまうこととかるんですよね……
strutsではもちろんマルチスレッドで動いているので、スレッドセーフを考えないといけないです。
スレッドセーフかどうかは一見判断つかなかったりします。
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
private static String test = null;
test = "test";
}
だとスレッドセーフ
private static String test = null;
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
test = "test";
}
だとスレッドセーフではない。
メソッドの外に定義するか中に定義するかによってスレッドセーフかどうか変わります。
スレッドセーフじゃない場合は重大な不具合に陥る場合があるので注意が必要です……
クラスによってスレッドセーフかどうか判断が必要な場合もあります。StringBufferとStringBufferとか。
全てローカル変数で使用すれば問題ないんでしょうけど参考までに。
strutsで作成する人は気を付けていただきたいものです。