我正在尝试解决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);
}
解决方法:
简单的解决方案
private final Exchanger<Person> waitingPerson = new Exchanger<Person>();
public Person getWaitingPerson(Person person, int timeoutMS)
throws InterruptedException, TimeoutException {
return waitingPerson.exchange(person, timeoutMS, TimeUnit.MILLISECONDS);
}
我认为这些人没有性取向.