首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

恒量成员变量,涉及线程安全的讨论

2014-01-23 
常量成员变量,涉及线程安全的讨论class Test{static finall HashTableString, String table initialHa

常量成员变量,涉及线程安全的讨论

class Test
{
static finall HashTable<String, String> table = initialHashTable();

public Test()
{

}

public void useHashTable()
{
//这里使用table 
table.getValue("123");
}
static HashTable<String, String> initialHashTable()
{
HashTable<String, String> ht = new hashTable<String, String>();
ht.put("123", "abc");
ht.put("456", "dfe");
return ht;
}
}


这个类是要在web上被调用,如果有100个人调用useHashTable这个函数,如果用HashTable(线程安全),每个人都得等别人使用完了才能用.效率也太低了吧.如果用hashMap,虽然不是线程安全的,但我的useHashTable只是读这个数组,并不写,有问题吗?


如果table 不是个复杂类型,只是个String类型,那不管多少个线程读它,都没问题吧?
[解决办法]
如果完全不涉及写操作,并发就不是问题。


Java提供了不错的支持并发的Map,可降低并发操作时的同步开销,具体可Google了解。
[解决办法]
并发控制就是为了控制不取到脏数据,即然都没有去改变过值,就不会存在并发与否了

热点排行