由于,一般情况下系统只生成servlet的单一实例,之后,为每个用户请求创建新的线程。这样的话,可能出现多个线程并发地访问同一个servlet对象。
原则上可以实现SingleThreadModel,可以保证不会有多个请求线程同时访问该单个实例。但是这不是个好选择。
原因一,如果servlet被频繁访问,那么同步会对性能造成极大的等待时间。
原因二,现在服务器可以使用多个实例来处理请求,这样的话仍然会出现并发访问的问题。
一个好的方案,就是明确地同步对代码的访问。
synchronized(this){
................
}