Я всегда считал, что заявление об отказе от ответственности вводит в заблуждение, особенно для начинающих (простите, если это не ваш случай).
Этот класс является поточно-ориентированным: несколько потоков могут совместно использовать один объект Properties без необходимости внешней синхронизации.
Даже многопоточные классы нуждаются в синхронизации больше, чем вы думаете. В этих классах синхронизируются их методы, но часто пользователь использует эти классы в более сложном контексте.
Если вы только положите / получите, то все в порядке, но с еще большим количеством кода все становится сложнее:
p.putProperty("k1","abc");
p.putProperty("k2","123");
String.out.println(p.get("k1")+p.get("k2"));
Этот пример кода печатается только для shure «abc123» в многопоточной среде, если секция является синхронизированным блоком (и даже тогда что-то может пойти не так).
По этой причине (и, конечно, из-за производительности) я предпочитаю не-поточно-безопасные классы, и меня заставляют подумать: моя программа поточно-безопасна ...