servlet 声明一个私有静态类对象成员,那么在doPost等方法中使用该类对象的方法是否线程安全?
public class MyServlet extends HttpServlet {
private static IUtils utils= null;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
utils.do();
}
}
代码结构如上,do不是静态方法,且方法内使用的都是局部变量,做的事情就是连接数据库做查询,然后返回查询结果。
1.在doPost调用这个do方法是否安全?
2.是否有必要声明成静态的,我希望这个utils不要被反复创建。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
每一个
Servlet
对象在 Web 容器中只有一个实例(单例模式),所以如果多个 HTTP 请求请求的是同一个Servlet
,那么多个 HTTP 请求对应的线程将并发调用Servlet
的doPost
方法 —— 简单起见,可以将你的IUtils
使用ThreadLocal
封装。