Как я могу реализовать очередь блокировки с примитивными типами?
Существует ли собственная реализация Java, которая использует очередь блокировки с примитивными типами? Если нет, как я могу построить один?
Я хочу использовать блокировку очереди без упаковки и распаковки при использовании типов примитивов. Я проверяю активы trove, но они не поддерживают блокировку очереди.
1 ответ
Насколько я знаю, нет встроенной очереди блокировки для примитивных типов.
Это оставляет вам два варианта:
Избегайте примитивных типов. Используйте обертки Java, такие как Integer, Float и т. Д. Это то, что я бы порекомендовал, если у вас нет очень веских причин избегать ссылок (боитесь ли вы дополнительной памяти? Сколько элементов вы планируете оставить в очереди?)
Реализуйте очередь блокировки самостоятельно. Это должно быть довольно просто, используя простой массив и семафор. Хотя вы, вероятно, сможете добиться большей производительности, если скопируете реализацию OpenJDK и внесете необходимые изменения. Просто поменяй
private final E[] items
что-то вродеprivate final int[] items
затем внесите дополнительные изменения, которые могут потребоваться, еслиitems
ссылка.