我一直都很不理解servlet的做法,对于并发的处理机制.
例如:在service方法中,写了一个同步锁(synchronized),那么,是不是有一个用户登陆进去,进入了锁,其他用户就进不了这个页面呢?假如我在锁里面做一个for循环,循环次数接近无限大,是不是其他用户就不能进入这个页面?
另外一个就是servlet中的工厂模式.
我做了一个dao的单例模式,在action中,实例化这个单例模式,那这个实例是怎么运用的呢?每个人都是公用这个单例,就不会存在并发问题吗?毕竟只有一个实例,在内存中是怎么分配的?好象有10000个IP同时访问这个页面,这个单例如何分配?谢谢各位高手给我指点!~
例如:在service方法中,写了一个同步锁(synchronized),那么,是不是有一个用户登陆进去,进入了锁,其他用户就进不了这个页面呢?假如我在锁里面做一个for循环,循环次数接近无限大,是不是其他用户就不能进入这个页面?
另外一个就是servlet中的工厂模式.
我做了一个dao的单例模式,在action中,实例化这个单例模式,那这个实例是怎么运用的呢?每个人都是公用这个单例,就不会存在并发问题吗?毕竟只有一个实例,在内存中是怎么分配的?好象有10000个IP同时访问这个页面,这个单例如何分配?谢谢各位高手给我指点!~
解决方案 »
- ireport 交叉报表,动态列标题,别名太长
- SSH框架,做插入可以,但是作更新和查找就报错
- 在eclipse里 修改数据库的时候 指定的列本来是有值 当我修改的时候变为空了
- 使用SSH按中文拼音排序问题
- [求教]一直很困惑的RPC和WebService的区别和联系?请朋友们帮忙理理。
- ibatis中的问题
- hibernate保存后返回主键
- 一个java和C的类比的问题
- 200分问一个小问题, 在线等: JBuilder自带的ESite for weblogic部署出错...
- mybatis-plus生成代码问题
- Error listenerStart 我郁闷死了
- struts2自动去除首尾空格
单例模式 在dao中,通常将SessionFactory设计为单利模式,此単例对象sessionFactory用于生产bean,也就是制造session。打个比方来说,有一个汽车工厂SessionFactory,这个工厂的功能就是可以生产很多汽车。虽然需要的汽车数量很多,但是通常一家工厂就够用了,建一个工厂的系统开销是比较大的,所有单例是比较合适的。
另外需要注意的是,SessionFactory是线程安全的,多个并发线程可以同时访问一个SessionFactory 并从中获取Session实例。而Session并非线程安全,也就是说,如果多个线程同时使用一个Session实例进行数据存取,则将会导致Session 数据存取逻辑混乱....
service方法中同步也不能保证其它用户不能入同步块的逻辑.这要看你在什么对象上同步.这和servlet本身并没有多大关系.
是要看被同步的对象对于这个service方法的范围.如果是方法内定义的对象,同步其实就是没有任何作用.