Сейчас я работаю над LayerManager для решения проблемы маршрутизации графов. . Менеджер отвечает за предоставление и сброс фиксированного набора слоев.
Я хотел реализовать шаблон Consumer-Producer со списком блокировки, чтобы входящие запросы маршрутизации блокировались до тех пор, пока нет свободных слой доступен. Пока что я нашел только блокирующую очередь, но поскольку нам не нужен 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);
}
}
Подробнее здесь: https://stackoverflow.com/questions/298 ... ementation
Мобильная версия