以前一直都是理所当然的认为浏览器发起一个请求到后台action,肯定是创建一个新线程并创建一个新类来为这个请求服务,其中的想法也比较混乱却没有理会。
直到近期遇到了一个新的需求要做高并发的时候抢购一个物品,就想怎么样给action加一个synchronized同步一下,这时候问题就来了!
1.action收到请求后是用同一个线程进行提供服务呢还是每次都新建一个线程?
2.web服务器收到请求后是新建一个action实例对象还是用单例模式?
3.如何控制每次只能一个用户访问特定参数下的该action?
为了探究这些问题,先做了一个例子(用的是SSH),回答了前2个问题
1.action收到同一浏览器的访问时会新建一个线程,之后每次都用该线程进行该浏览器访问的处理。
2.无论是不是同一浏览器的请求,服务器会在收到请求后新建action对象
对于第三个问题就比较难办些了。
之前接触的多线程同步的内容比较少,第一想到的是synchronized的,于是就百度下synchronized用法,写了个例子