Я думаю, что методы StringEscapeUtils.escapeHtml () и unescapeHtml () библиотеки Jakarta Commons Lang - это то, что вы ищете. См. http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/StringEscapeUtils.html .
Посмотрите на Apple Docs .
В основном, если вы говорите неатомный
, и вы генерируете методы доступа, используя @synthesize
, то если несколько потоков пытаются изменить / прочитать собственность сразу, может случиться плохое. Вы можете получить частично записанные значения или переизданные / сохраненные объекты, которые могут легко привести к сбоям. (Однако это потенциально намного быстрее, чем атомарный метод доступа.)
Если вы используете значение по умолчанию (которое является атомарным
; раньше для этого не было ключевого слова, но теперь теперь ), затем методы @synthesize
d используют блокировку на уровне объекта, чтобы обеспечить сериализацию нескольких операций чтения / записи в одно свойство. Как указывают документы Apple, это не означает, что весь объект является потокобезопасным , но отдельные свойства для чтения / записи являются.
Конечно, если вы реализуете свои собственные средства доступа, а не используете @synthesize
, я думаю, что эти объявления ничего не делают, кроме того, что выражают ваше намерение относительно того, реализовано ли свойство безопасным способом.
Если вы укажете «атомарный», сгенерированные функции доступа будут иметь дополнительный код для защиты от одновременных обновлений.
В многопоточной программе атомарная операция не может быть частично прервана, в то время как неатомарные операции могут.
Поэтому вы должны использовать взаимные исключения (или что-то еще вот так) если у вас есть критическая операция, которая не является атомарной, которую вы не хотите прерывать.
Обычно атомарные средства, которые записывают / читают свойство, выполняются как одна операция. Atomic_operation
В дополнение к тому, что уже было сказано о безопасности потоков, неатомарные свойства работают быстрее, чем атомарные методы доступа. Это не то, о чем вам обычно нужно беспокоиться, но имейте это в виду. По этой причине сгенерированные свойства Core Data частично неатомичны.