所有Java Properties的方法是否完全同步?

时间:2010-08-26 13:07:39

标签: java properties synchronization

我知道Properties类是Hashtable的子类。所以所有继承的方法都是同步的,但是属性的其他方法如store,load等呢? (专门处理Java 1.6)

2 个答案:

答案 0 :(得分:16)

java1.6 javadoc说:

  

这个类是线程安全的:多个   线程可以共享一个属性   对象无需外部   同步。

答案 1 :(得分:6)

我总是发现文档免责声明误导,特别是初学者(如果不是你的情况,请原谅)。

此类是线程安全的:多个线程可以共享一个Properties对象,而无需外部同步。

即使是线程安全的类也需要比你想象的更多的同步。在这些类上同步的是它们的方法,但通常用户在更复杂的上下文中使用这些类。

如果你只是放/得到它是好的,但是有了更多的代码,事情变得更加严密:

p.putProperty("k1","abc");
p.putProperty("k2","123");
String.out.println(p.get("k1")+p.get("k2"));

此示例代码仅在多线程环境中为shure“abc123”打印,如果该部分是同步块(即使这样也可能出错)。

由于这个原因(以及courrse性能)我更喜欢非线程安全类,我不得不想:我的程序线程安全......

相关问题