Я искал ответ на этот вопрос о SO и Google, но пока не нашел подходящего решения.Реализация списка блокировки Java
В настоящее время я работаю над LayerManager в задаче маршрутизации графа. Менеджер отвечает за предоставление и сброс фиксированного набора слоев.
Я хотел внедрить шаблон Consumer-Producer с блокирующим списком, чтобы запросы на входящую маршрутизацию были заблокированы, поскольку свободный доступ к свободному слою невозможен. До сих пор я нашел только blocking queue, но так как нам не нужен FIFO, LIFO, но случайный доступ к очереди на самом деле не работает. Чтобы быть более точным, должно быть возможно что-то подобное:
/* this should be blocking until a layer becomes available */
public Layer getLayer(){
for (Layer layer : layers) {
if (layer.isUnused() && layer.matches(request))
return layers.pop(layer);
}
}
Есть ли способ достичь этого?
насчет java.util.concurrent.PriorityBlockingQueue с вашим собственным Компаратор ? – StanislavL
Спасибо. Ну, слой, на мой взгляд, на самом деле не сравнима. они соответствуют только заданному запросу. –