有状态对象和无状态对象

对象的有无状态会影响线程安全

有状态对象:有属性,并且可以操作属性值

这种对象,如果是单例模式(全局有且只有一个)则存在多线程安全问题

因为多个线程共享堆内存,此时对该对象的引用,操作使得该对象成为临界区

需要加锁保证同步

spring中这类对象作用域一般声明为Prototype

 

无状态对象:无属性,或者有属性但是没有操作该属性的方法

这种对象只能被用作读取功能,是线程安全的

 

判断多线程是否安全,主要是判断方法中是否修改了临界资源,即多个线程共享的对象

posted @ 2018-12-21 15:06  byebye_bird  阅读(473)  评论(0编辑  收藏  举报