Controller是单例模式的吗?如何保证线程安全?
2019-06-14 本文已影响190人
鸿雁长飞鱼龙潜跃
Controller是单例模式的吗?如何保证线程安全?
答:Controller是单例的,也就是说并发请求调用Controller生成的是同一个对象。从线程安全的角度来说,这些线程共享Controller的实例对象。
接下来我们说一下线程安全的问题。首先明确一点,spring的controller是非线程安全的。既然是非线程安全的,那么我们就要注意共享内存中的对象了,这些对象必须要注意线程安全问题。
如何解决线程安全问题呢?
第一种方式,避免定义全局变量。局部变量不存在线程安全问题。
第二种方式,使用ThreadLocal来进行线程隔离。如何使用这里不再赘述。网上有很多例子。