解决servlet中的并发问题

时间:2019-11-30 07:28:07

标签: java servlets concurrency

昨天我接受了一些技术问题的面试。不幸的是我失败了... 对于我无法解决的代码片段,测试中存在一个有趣的问题,但对分辨率仍然感到非常兴奋。我没有得到公司的任何解释。从字面上看,昨晚很难入睡。你们可以帮我们一些想法吗?

问题:

有效地解决servlet代码中的线程问题。提交修改后的代码段:

public class CachedServlet extends HttpServlet {
    private int cacheHits;
    private int lastId;
    private String lastResult;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String result = null;
        int id = extractFromRequest(request);
        if ((id == lastId) && (lastResult != null)) {
            result = lastResult;
            cacheHits++;
        } else {
            result = doTimeConsumingCalculation(id);
            lastId = id;
            lastResult = result;
        }
        encodeIntoResponse(response, result);
    }

谢谢,祝你有美好的一天!

0 个答案:

没有答案