突然想问,java中为什么Hashtable是线程安全的,而HashMap是线程不安全的?还有ArrayList为什么是线程不安全的,Vector是线程安全的??于是乎我就想是不是Hashtable、Vector内部实现中进行了同步控制。于是我就想,是不是没做同步控制的对象就不是线程不安全的??
2条回答 默认 最新
- threenewbee 2018-11-14 13:39关注
如果一个函数不访问成员函数,只访问局部变量和参数,那么它就不需要同步,也是线程安全的。(当然,这个函数内部不能调用线程不安全的其他函数)
这种函数是不变的(immutable),一个不变的函数,给定输入参数,返回值就给定了。比如说三角函数。
有的函数,它的返回值不但受到参数的影响,而且受到对象状态的影响,这种函数就需要同步。解决 无用评论 打赏 举报