Как я могу реализовать очередь блокировки с примитивными типами?

Существует ли собственная реализация Java, которая использует очередь блокировки с примитивными типами? Если нет, как я могу построить один?

Я хочу использовать блокировку очереди без упаковки и распаковки при использовании типов примитивов. Я проверяю активы trove, но они не поддерживают блокировку очереди.

1 ответ

Решение

Насколько я знаю, нет встроенной очереди блокировки для примитивных типов.

Это оставляет вам два варианта:

  1. Избегайте примитивных типов. Используйте обертки Java, такие как Integer, Float и т. Д. Это то, что я бы порекомендовал, если у вас нет очень веских причин избегать ссылок (боитесь ли вы дополнительной памяти? Сколько элементов вы планируете оставить в очереди?)

  2. Реализуйте очередь блокировки самостоятельно. Это должно быть довольно просто, используя простой массив и семафор. Хотя вы, вероятно, сможете добиться большей производительности, если скопируете реализацию OpenJDK и внесете необходимые изменения. Просто поменяй private final E[] items что-то вроде private final int[] itemsзатем внесите дополнительные изменения, которые могут потребоваться, если items ссылка.

Другие вопросы по тегам