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