Skip to content

ЛР1: Гараев Раиль#14

Open
railolog wants to merge 5 commits intomasterfrom
master
Open

ЛР1: Гараев Раиль#14
railolog wants to merge 5 commits intomasterfrom
master

Conversation

@railolog
Copy link

@railolog railolog commented Oct 6, 2025

No description provided.


public class Restaurant {
private final AtomicInteger foodServings;
private final LinkedBlockingQueue<FoodRequest> requests = new LinkedBlockingQueue<>();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Что на джанный момент гарантирует справедливое распределение? Кажется, что сейчас вас защищает только равномерность рандома)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В целом да, но еще и сам алгоритм. Поясню: если какой-то из программистов проголодался, то он гарантированно поест после того, как его соседи съедят не более одной порции, т.к. он уже будет находиться в очереди за локом ложки + его соседи получат следующие порции после него самого.
Но это конечно не отменяет того, что самый быстрый из программистов скорее всего поест больше остальных.

Для интереса сейчас попробовал поменять очередь на ConcurrentSkipListSet и PrioorityBlockingQueue, распределение не стало заметно более справедливым.

private final int waitersCount;
private final int servingsCount;
private final ExecutorService programmersPool;
private final ExecutorService waitersPool;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Чисто как симуляция норм, но фактически -- может можно обойтись и без очереди официантов? Да/нет и почему?

programmersCount,
waitersCount,
servings,
Executors.newVirtualThreadPerTaskExecutor(),
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Гляньте пж к офлайн защите разницу по времени между виртуальными потоками и fixed thread pool

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Постарайтесь мне потом объяснить результаты, чтоб не скучно было

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants