恒量成员变量,涉及线程安全的讨论
常量成员变量,涉及线程安全的讨论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了解。
[解决办法]并发控制就是为了控制不取到脏数据,即然都没有去改变过值,就不会存在并发与否了