線程安全是編程中的術(shù)語,指某個(gè)方法在多線程環(huán)境中被調(diào)用時(shí),能夠正確地處理多個(gè)線程之間的共享變量,使程序功能正確完成。
Servlet 不是線程安全的,servlet 是單實(shí)例多線程的,當(dāng)多個(gè)線程同時(shí)訪問同一個(gè)方法,是不能保證共享變量的線程安全性的。
Struts2 的 action 是多實(shí)例多線程的,是線程安全的,每個(gè)請求過來都會 new 一個(gè)新的 action 分配給這個(gè)請求,請求完成后銷毀。
SpringMVC 的 Controller 是線程安全的嗎?不是的,和 Servlet 類似的處理流程。Struts2 好處是不用考慮線程安全問題;Servlet 和 SpringMVC 需要考慮線程安全問題,但是性能可以提升不用處理太多的 gc,可以使用 ThreadLocal 來處理多線程的問題。