2

My understanding of JSP is that each line in the java code is run step by step (in sequence). E.g. if I have a code below, doSomething("apple") will be executed first until it returns a value, then doSomething("orange") will be executed next until it returns a value, then finally doSomething("pear") will be executed until it returns a value and the whole page is displayed.

<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>

What is the best way to make these calls parallel e.g. run doSomething("apple") & doSomething("orange") & doSomething("pear") concurrently? Thank you.

4

3 回答 3

3

JSP创建动态 html。因此,您实际上是将业务逻辑的结果从javaBean您的 html 表中。因为你不能让它并发,因为你需要将每个方法的结果放在行中。
您应该重构您的代码,以便计算您需要的所有内容(可能使用并发),然后检索结果以将它们放置在行中。

于 2013-03-24T09:03:58.447 回答
2

据我了解您的问题,您需要为您的方法创建三个任务(三个线程),无论它们的完成顺序如何,它们都将独立运行。

于 2013-03-24T08:44:45.017 回答
2

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

于 2013-03-24T09:24:32.080 回答