我知道Properties类是Hashtable的子类。所以所有继承的方法都是同步的,但是属性的其他方法如store,load等呢? (专门处理Java 1.6)
答案 0 :(得分:16)
这个类是线程安全的:多个 线程可以共享一个属性 对象无需外部 同步。
答案 1 :(得分:6)
我总是发现文档免责声明误导,特别是初学者(如果不是你的情况,请原谅)。
此类是线程安全的:多个线程可以共享一个Properties对象,而无需外部同步。
即使是线程安全的类也需要比你想象的更多的同步。在这些类上同步的是它们的方法,但通常用户在更复杂的上下文中使用这些类。
如果你只是放/得到它是好的,但是有了更多的代码,事情变得更加严密:
p.putProperty("k1","abc");
p.putProperty("k2","123");
String.out.println(p.get("k1")+p.get("k2"));
此示例代码仅在多线程环境中为shure“abc123”打印,如果该部分是同步块(即使这样也可能出错)。
由于这个原因(以及courrse性能)我更喜欢非线程安全类,我不得不想:我的程序线程安全......