Я пытаюсь создать простую игру на Java. Я хочу закодировать сервер, который принимает несколько игроков. Тут лежит мета-игра:Многопоточный сервер с общим ресурсом
Проигрыватель подключается к серверу, чтобы сыграть в игру, и указать номер. Каждый игрок играет только одну игру. Игра только начинается или разрешается, если 4 игрока подключены. Если сумма всех игроков превышает 21, все проиграют, иначе выиграют все. После решения игры каждый игрок должен быть предупрежден, если он выиграл или проиграл.
Алгоритмы проверки выигрыша/проигрыша или принятия нескольких клиентов, которые я получаю. Мое сомнение - это то, что должно быть потоком (или запущенным объектом) и/или тем, что является общим ресурсом. Всего несколько направляющих линий, и поэтому я могу это реализовать.
Что вы пытались и что именно не срабатывало так, как вы ожидали, что оно будет работать? – Philipp
Я немного смущен тем, как работает параллелизм. Я мог бы сделать это с помощью кода и исправления, например, игра будет запущенными объектами со списком игроков и просто начнется/будет создана, когда у меня будет 4 игрока. После того, как игра решит, будет напечатано каждому клиенту результат. Но я действительно хочу, чтобы каждый клиент был потоком, который после ввода номера оставался заблокированным (await()), и когда все игроки вводят свои номера, будет предупреждено продолжить и распечатать результат. – Duozhasht
Вы должны избегать многопоточности, когда можете. Несколько потоков приводят к взаимоблокировкам и условиям гонки, которые приводят к неясности и невозможности воспроизведения ошибок. Java предоставляет [New-IO] (http://tutorials.jenkov.com/java-nio/index.html), который позволяет обрабатывать большое количество клиентов в одном потоке. – Philipp