本人java开发,今天在研究秒杀问题的时候,突然间脑子里就产生了这样的思考。
众所周知,Spring默认是单例模式,那么单例模式有什么优缺点呢?
优点一:创建的对象较少!在Tomcat模型为BIO
时,会对每一个请求创建一个线程,如果创建的线程数较大,每一个线程中都有@Autowire这种注解,那么创建的对象就会非常之多。另外,如果对象B注入到对象A的属性中,如果对象A被创建了多个对象,那么对象B也会被创建多个,层层依赖。
当然如果是NIO,就没有单例的必要了,因为它只会用一个线程了来处理数据请求,这也注定NIO不能用来IO密集型操作。
缺点一:由于只有一个对象,如果属于类的成员变量,则会被多次调用,类似于类的静态变量。
缺点二:BIO中,如果你在这个对象中的方法上使用了Synchronized
,代表锁住的是该对象。