anchor.diff:  
   * Рефлексивность означает, что отношение, примененное к одинаковым аргументам, является истинным.
   * Антисимметричность означает, что отношение не симметрично. То есть отношение, примененное к неодинаковым аргументам, поменняными местами, будет ложным.
  -* Транзитивность означает, что если отношение истинно для аргументов *A* и *B* и для аргументов *A* и *C*, то оно истинно для аргументов *A* и *C*.
  -
  -Примером отношения частичного порядка является отношение *"быть делителем"*.
  +* Транзитивность означает, что если отношение истинно для аргументов _A_ и _B_ и для аргументов _A_ и _C_, то оно истинно для аргументов _A_ и _C_.
  +
  +Примером отношения частичного порядка является отношение "быть делителем".
   
   === *Что такое отношение happens-before?*
   
  -Отношение *happens-before*(происходит-до) является отношением частичного порядка между двумя операциями. Если одна операция *происходит до* другой, то ее результат видим и упорядочен для другой.
  +Отношение _happens-before_ (происходит-до) является отношением частичного порядка между двумя операциями. Если одна операция происходит-до другой, то ее результат видим и упорядочен для другой.
   
   === *Почему happens-before — это частичный порядок?*
   
  
positive.code: * Другой поток, держа монитор, вызвал метод `notify` или `notifyAll` на объекте
  * Если поток попал в список ожидания вызывом `wait` c таймаутом, то по истечении таймаута поток проснется
  * Поток, попавший в список ожидания, прерван вызывом `Thread.interrupt`
  * Поток может проснуться без видимой на то причины. ОС не запрещено это делать. Это называется *spurious wakeup*
  
  === *Различия между Thread.isInterrupted() и Thread.interrupted()?*
  
  
negative.code: 
  В этом коде есть несколько проблем:
   
  * Так как доступ к `instance` не синхронизирован, то никто не гарантирует безопасную публикацию этого поля. Оно публикуется через гонку. Поток, который увидит, что `instance!=null` может увидеть это поле не полностью сконструированным (например, `state` может быть null).
  * Чтения `instance` происходят через гонку. Тот факт, что условие  `instance===null` сработало не значит, чтение переменной в блоке return вернет это же значение. Там вполне может быть null.
  
  Можно воспользоваться holder-идиомой. Она работает за счет того, что класс `Holder` лениво грузится и инициализуруется загрузчиком классов. Дальше  доступ идет через `synchronized`, но так критическая секция очень короткая, JVM довольно хорошо оптимизирует такие операции.
  
  [source, java]
  ----
  