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