Как я могу создать оболочку над ReentrantReadWriteLock ReadLock и WriteLock - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть ReentrantReadWriteLock. ReentrantReadWriteLock содержит ReadLock и WriteLock в качестве подклассов.

I want to extend this ReadLock and WriteLock by my custom classes as 

DummyReadLock and DummyWriteLock.

Тогда я должен быть в состоянии сделать что-то вроде ниже

 final Lock lock = new DummyReadLock.readLock();

или

final Lock lock = new DummyWriteLock.writeLock();

Можно ли этого добиться ??

Ответы [ 2 ]

0 голосов
/ 06 декабря 2011

Да, это должно быть возможно. Я точно не знаю, почему вы захотите это сделать, но приведенный ниже код расширит, например, ReadLock.

public class DummyReadLock extends ReentrantReadWriteLock.ReadLock
{
  public DummyReadLock(ReentrantReadWriteLock arg0)
  {
    super(arg0);
  }
}

Обратите внимание, что конструктор для ReadLock требует ReentrantReadWriteLock в качестве параметра, поэтому вы не можете вызвать его точно так, как вы показали в своем примере.

0 голосов
/ 06 декабря 2011

Вы можете:

class DummyReadLock extends ReentrantReadWriteLock.ReadLock {

    private ReentrantReadWriteLock.ReadLock readLock;

    // inherited constructor
    protected DummyRLock(ReentrantReadWriteLock rwlock) {
        super(rwlock);
        this.readLock = rwlock.readLock(); 
    }

    public ReentrantReadWriteLock.ReadLock readLock() {
        return readLock;
    }       
}
...