这是在单线程还是多线程上运行?

时间:2016-09-04 16:08:04

标签: java java-8 thread-safety

此程序是否在单线程多线程上运行

的Servlet

public class PagesNavigation extends HttpServlet {

    private static final long serialVersionUID = 1L;
    public UserData user = null;

    public void init(ServletConfig config) throws ServletException {
        super.init(config);

        try {
            user = new UserData();  //I will use this object to access all functions.

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

类:UserData

 public class UserData {

    AvailableProducts availableProducts = new AvailableProducts();
    UserSelectedProduct userSelectedProduct = new UserSelectedProduct();
    ProductsCart productsCart = new ProductsCart();
    CartView cartView = new CartView();
    ProductsForCheckout productsForCheckout = new ProductsForCheckout();
}

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

只是为了澄清 - servlet是单例,它们肯定是由多个线程运行的。

此外,AvailableProducts也可能是一个单例并在所有用户之间共享 - 除非您为给定用户定制产品。

答案 1 :(得分:0)

如果你正在进行Java Enterprise Edition编程(通常是HttpServlet),那么它都是多线程的,只有很少的特定例外。您的UserData对象几乎肯定需要线程安全。