在JSP中并行化调用的最佳方法是什么?

时间:2013-03-24 08:36:49

标签: java jsp concurrency parallel-processing

我对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")?谢谢。

3 个答案:

答案 0 :(得分:3)

JSP创建动态HTML。因此,您实际上是将业务逻辑的结果从javaBean放到您的html表中。由于您需要将每个方法的结果放在行中,因此无法使其并发 您应该重新构建代码,以便计算所需的一切(可能使用并发),然后检索结果以将它们放在行中。

答案 1 :(得分:2)

当我理解你的问题时,你需要为你的方法创建三个任务(三个线程),它将独立运行而不管它们的完成顺序。

答案 2 :(得分:2)

您不应该在JSP中执行此操作,它旨在在单个线程中呈现。如果页面太慢,那么现在常用的方法是使用带有三个占位符的快速加载页面。然后用AJAX加载慢速部件。这些可以使并发呼叫返回服务器以加载其余部分。