经典的Java同步问题(小心一试?)

我正在尝试解决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);
}

我认为这些人没有性取向.

上一篇:MySql phpMyAdmin:自动复制/同步两个数据库


下一篇:javascript for循环中的异步进程