热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javaString哈希码缓存机制

如何解决《javaString哈希码缓存机制》经验,为你挑选了1个好方法。

查看Java的String类,我们可以看到哈希代码在第一次评估后被缓存.

public int hashCode() {
    int h = hash;
    if (h == 0 && value.length > 0) {
        char val[] = value;

        for (int i = 0; i 

hash实例变量在哪里.我有一个问题,为什么我们需要h额外的变量?



1> Andremoniy..:

仅仅因为hash循环中的值更改和没有中间临时变量的解决方案不是线程安全的.考虑在多个线程中调用此方法.

thread-1开始hash计算,它0不再是.稍后一些小的时刻会thread-2在同hashCode()一个对象上调用相同的方法,但是看hash不到0,但thread-1还没有完成计算.结果,将使用thread-2错误的hash(未完全计算的)值.


推荐阅读
author-avatar
袁韦伦世彦琬育
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有