Я пытаюсь решить проблему синхронизации Java. Дело в следующем:
Есть люди класса, и они хотят быть в паре. Итак, у меня есть класс Coupling, который выполняет сопряжение. Когда человек входит в муфту, и ее никто не ждет, она начинает ждать. И ждет, пока кто-нибудь не придет или ей не надоест и не уйдет (таймер предопределения отключается).
Если она заходит и находит кого-то, кто ее ждет, они немедленно соединяются, обмениваются телефонными номерами и идут разными путями. (Продолжите выполнение с информацией другого.)
Один и тот же человек не может уйти с двумя людьми.
Обещаю, что это не университетское упражнение, в котором я пытаюсь обмануть. :) Я просто давно не делал этого, и мне это немного надоело.
Это то, с чем я сначала столкнулся, поэтому Thread пытается установить Person, и если это не сработает, он получит false в качестве возвращаемого значения. Тогда нить получает официанта. По понятным причинам это не сработает (между вызовами может появиться другой поток), и как я могу подать сигнал ожидающему потоку для продолжения.
Вот код, который я упомянул:
public class Coupling {
private static volatile Person waitingPerson = null;
public static synchronized Integer getWaitingPerson() {
Integer temp = waitingPerson;
waitingPerson = null;
return temp;
}
public static synchronized Boolean setWaitingPerson(Integer waitingPerson) {
if (waitingPerson == null){
syncro.waitingPerson = waitingPerson;
return new Boolean(true);
}
else
return new Boolean(false);
}