突然想问,java中为什么Hashtable是线程安全的,而HashMap是线程不安全的?还有ArrayList为什么是线程不安全的,Vector是线程安全的??于是乎我就想是不是Hashtable、Vector内部实现中进行了同步控制。于是我就想,是不是没做同步控制的对象就不是线程不安全的??
2条回答
- threenewbee 2018-11-14 13:39关注
如果一个函数不访问成员函数,只访问局部变量和参数,那么它就不需要同步,也是线程安全的。(当然,这个函数内部不能调用线程不安全的其他函数)
这种函数是不变的(immutable),一个不变的函数,给定输入参数,返回值就给定了。比如说三角函数。
有的函数,它的返回值不但受到参数的影响,而且受到对象状态的影响,这种函数就需要同步。解决 无用评论 打赏 举报
悬赏问题
- ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
- ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
- ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
- ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
- ¥20 腾讯企业邮箱邮件可以恢复么
- ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
- ¥15 错误 LNK2001 无法解析的外部符号
- ¥50 安装pyaudiokits失败
- ¥15 计组这些题应该咋做呀
- ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?