我正在使用JSP,servlet开发的数据库项目。这是一个拥有20多个用户的ERP项目。我的老板告诉我在项目中使用Multi-theading。请告诉我如何决定哪些页面应该是多线程的,哪些页面不应该。
答案 0 :(得分:0)
jsp中的Java多线程并不是一个有效的参数,因为正如@JBNizet所说,一个Web容器已经为你处理多线程。
但是,如果您拥有可以异步运行的代码,则可以使用多线程。
让我们假设您有以下情况:
obj1 = obj2.getValFromDb(obj3.getSessionId(obj4.getId()));
在此,不能使用多线程,因为必须按顺序执行任务才能获得结果。所以你只需要一个线程......
但是在下面的例子中......
val = getValFromDb()+getValFromSRC1()+getValFromSRC2();
子结果可以在单独的线程中计算。
因此,您必须对代码进行评估并适当地使用多线程。
对于jsps中的isThreadSafe
指令,你唯一能做的就是禁用多线程(这与你正在寻找的相反)。正如规范所说:
SingleThreadModel接口的使用保证只有一个 一次执行的线程将在给定的servlet实例的服务中执行 方法。重要的是要注意,此保证仅适用于 每个servlet实例,因为容器可以选择这样的池 对象。可供多个servlet实例访问的对象 一次,例如HttpSession的实例,可以在任何时候使用 特定时间到多个servlet,包括那些实现的servlet 了SingleThreadModel。