Lock-free контейнер

Необходимо реализовать в lock-free стиле следующий интерфейс:

/** * Lock-Free очередь с приоритетами * @param <T> Тип элементов */ public interface PriorityQueue<E extends Comparable<E>> extends Queue<E> { /** * Проверка очереди на пустоту * * Метод должен быть lock-free (wait-free для уверенных в себе) * * @return true если очередь пуста, иначе - false */ boolean isEmpty(); }

Дополнительные условности:

Имя класса реализации - LockFreePriorityQueue

Класс должен иметь конструктор без параметров

Pull Request должен содержать в части тестирования проходящие:

Нагрузочные тесты на основе jcstress

Тесты корректности на основе lincheck

В реализации не предполагается увидеть стандартные контейнеры из java.util.concurrent

Не обязательно учитывать “ограниченность” размера контейнера, в этом смысле методы “add” и “offer” эквивалентны