单例带来的线程安全问题

来源:互联网 发布:91熊猫桌面软件 编辑:程序博客网 时间:2024/06/16 04:10

其实最初对于单例的线程安全问题一直一知半解,在我们大多使用spring的项目来说,spring管理bean默认是单例的,那么我们的业务逻辑也会是单例的也就是service是单例的,那么这是service是否是安全的呢?

我原来有听过无状态的bean是线程安全的,有状态的就是该bean是有其他变量的,静态的非静态的,当方法使用到了这些变量时如果是非final的就会产生线程安全问题,这是我们都很容易理解的,那么无状态的bean为什么就是线程安全的呢?我一直对此不甚理解。

其实可以这样理解,每一个线程都是执行一个线程的方法副本,然后得到方法返回数据,但是如果是有变量的情况下执行方法时计算就会出现错误。

在无状态下的方法可以被任意调用而不会产生错误,所以大多数情况下 spring管理的bean都是线程安全的,如果bean为有状态的那么就要考虑关掉singleton了。



0 0
原创粉丝点击