如何获取RMI方法的锁定

时间:2015-05-30 14:15:36

标签: java multithreading concurrency

我是RMI的新手,但我(应该)知道如何使用锁,坦率地说,我不太了解整个RMI的事情,我只是不确定我缺少什么概念所以代码没有得到阻止。

自从我做并发以来已经有一段时间了,但afaik,就像这样:

if (condition) {
    write.lock();
    //do something since it's inside the critical section
    write.unlock();
}

等等。而且我真的不需要它成为ReentrantReadWriteLocks或者其他什么,我只需要一个方法来获取锁定然后释放它。但是我需要在另一种方法中释放锁定,这就是我不知道我需要做什么(当它是rmi方法和客户端和服务器的代码以及我正在做的所有这些时)。

到目前为止我得到了什么:

public synchronized void acquire (boolean exc) throws RemoteException {
    if (exc) {
        write.lock();
    else {
        read.lock();
        exclusivo = exc;
    }
}

public synchronized boolean setFree() throws RemoteException {
    if (read.tryLock()) {
        read.unlock();
    } else {
        return false;
    }
}

然后客户端调用一个方法来获取锁,进行操作,然后使用另一个方法来释放它。显然这还没有完成,我相信(虽然我不确定,这就是为什么我要问),读取锁是关于正确的...但我很难“相信”它,即使我'我试过了它似乎工作,我不确定我是否遗漏了别的东西。

这是一个问题,另一个是,我真的不知道如何处理写锁,因为如果我写write.tryLock,它是免费的,它将获得锁,然后我会。 ..释放它并返回true我猜?但是当条件返回时,锁可以再次使用,因为它是写锁定?这样的事情,不确定

0 个答案:

没有答案