如何解决进程完成后,如何防止线程挂起java?
此过程每天运行数百次。当服务器主机每周一次在服务器上运行一次清理时,由于线程被挂起,这将导致系统关闭长达10分钟,并且通常会自行更正,但有时必须重新启动服务器。如何确保每次完成后都关闭线程?
@SlingServlet(paths =“ / bin / updateoliccart”,methods =“ POST”,Metatype = true) 公共类UpdateOLICCart扩展了SlingallMethodsServlet {
private static final long serialVersionUID = -7900366622715395681L;
protected final Logger log = LoggerFactory.getLogger(UpdateOLICCart.class);
@Reference
private ProcessApplication PA;
@Reference
private UpdatePayStatus updatePayStatus;
@Override
protected void doPost(final SlingHttpServletRequest req,final SlingHttpServletResponse resp) throws IOException {
Date dateStart = new Date();
HttpSession httpsession = req.getSession();
if(httpsession.isNew()){
log.error("Session was broken");
resp.sendRedirect("/content/wadoh/posterror.html");
}else{
String userType = (String)httpsession.getAttribute("userType");
String draftIDFull = (String)httpsession.getAttribute("draftIDFull");
String payStatus = updatePayStatus.getDraftProperty(draftIDFull,"paystatus",req.getRemoteUser());
log.error("The paystatus in Update OLIC Cart Servlet for user " + req.getRemoteUser() + " is " + payStatus);
if (!payStatus.equals("paymentreceived")){
if(userType.contains("facility")){//begin facility applicant
resp.getWriter().write(PA.updateFacilityCart(req).toString());
resp.getWriter().flush();
resp.getWriter().close();
}
else if(userType.contains("applicant")){//begin singular applicant
resp.getWriter().write(PA.updateApplicantCart(req).toString());
resp.getWriter().flush();
resp.getWriter().close();
}
else{
//unexpected result
log.error("Unexpected User Type");
}
}
else{
resp.sendRedirect("/content/wadoh/posterror.html");
}
}
Date dateStop = new Date();
long diff = dateStop.getTime() - dateStart.getTime();
long diffSeconds = diff / 1000 % 60;
log.info("UpdateOLICCart Servlet complete for:" + req.getRemoteUser() + " Completed in:" + diffSeconds);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。