我对JSP的理解是java代码中的每一行都是按步骤(按顺序)运行的。例如。如果我有下面的代码,doSomething("apple")
将首先执行,直到它返回一个值,然后doSomething("orange")
将被执行,直到它返回一个值,然后最终doSomething("pear")
将被执行,直到它返回一个值,显示整个页面。
<table border="1">
<thead>
<tr>
<th>Test</th>
</tr>
</thead>
<tbody>
<tr>
<td>Column A</td>
<td><%=javaBean.doSomething("apple")%></td>
</tr>
<tr>
<td>Column B</td>
<td><%=javaBean.doSomething("orange")%></td>
</tr>
<tr>
<td>Column C</td>
<td><%=javaBean.doSomething("pear")%></td>
</tr>
</tbody>
</table>
将这些调用并行的最佳方法是什么?同时运行doSomething("apple") & doSomething("orange") & doSomething("pear")
?谢谢。
答案 0 :(得分:3)
JSP
创建动态HTML。因此,您实际上是将业务逻辑的结果从javaBean
放到您的html表中。由于您需要将每个方法的结果放在行中,因此无法使其并发
您应该重新构建代码,以便计算所需的一切(可能使用并发),然后检索结果以将它们放在行中。
答案 1 :(得分:2)
当我理解你的问题时,你需要为你的方法创建三个任务(三个线程),它将独立运行而不管它们的完成顺序。
答案 2 :(得分:2)
您不应该在JSP中执行此操作,它旨在在单个线程中呈现。如果页面太慢,那么现在常用的方法是使用带有三个占位符的快速加载页面。然后用AJAX加载慢速部件。这些可以使并发呼叫返回服务器以加载其余部分。