StringBuffer or StringBuilder in Servlet's doFilter method?
我正在实现我的自定义筛选器:
1 | public class MyFilter implements javax.servlet.Filter |
我应该在这个
我想用这种方式:
1 2 3 | StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append(MY_CODE_HERE); response.sendRedirect(stringBuffer.toString()); |
或者…
1 2 3 | StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(MY_CODE_HERE); response.sendRedirect(stringBuilder.toString()); |
我知道
局部变量是线程安全的,在
此外,servlet请求和响应对象是为每个新的请求和响应重新创建的,因此根据其性质,它们是线程安全的。对于每个请求,将在单独的线程中执行
建议阅读:
因为它是一个局部变量,而不是由线程共享,所以可以使用StringBuilder。
只需使用
在你的例子中,
StringBuilder是一个更好的选择,因为它具有非同步特性,速度更快。每个请求的servletfilter-dofilter都在自己的线程中运行,因此您不需要同步的数据结构。如果它只是一个局部变量,那么StringBuilder就是选择。
只要它是在dofilter()方法中,它的
当然,除非该方法中有多个线程同时对其进行修改:)