備忘録 JAVA

Strutsとスレッドセーフ

2012年11月15日

マルチスレッドにおいて考えないといけない一つがスレッドセーフ

スレッドセーフとはマルチスレッド環境で、ライブラリやプログラム、クラスなどが複数のスレッドから同時に利用されても正常に動作すること。(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で作成する人は気を付けていただきたいものです。

-備忘録, JAVA
-, ,