java-design-patterns/reader-writer-lock/etc/reader-writer-lock.urm.puml
2019-12-07 18:03:49 +02:00

65 lines
1.6 KiB
Plaintext

@startuml
package com.iluwatar.reader.writer.lock {
class App {
- LOGGER : Logger {static}
+ App()
+ main(args : String[]) {static}
}
class Reader {
- LOGGER : Logger {static}
- name : String
- readLock : Lock
- readingTime : long
+ Reader(name : String, readLock : Lock)
+ Reader(name : String, readLock : Lock, readingTime : long)
+ read()
+ run()
}
class ReaderWriterLock {
- LOGGER : Logger {static}
- currentReaderCount : int
- globalMutex : Set<Object>
- readerLock : ReadLock
- readerMutex : Object
- writerLock : WriteLock
+ ReaderWriterLock()
- doesWriterOwnThisLock() : boolean
- isLockFree() : boolean
+ readLock() : Lock
+ writeLock() : Lock
}
-class ReadLock {
- ReadLock()
- acquireForReaders()
+ lock()
+ lockInterruptibly()
+ newCondition() : Condition
+ tryLock() : boolean
+ tryLock(time : long, unit : TimeUnit) : boolean
+ unlock()
}
-class WriteLock {
- WriteLock()
+ lock()
+ lockInterruptibly()
+ newCondition() : Condition
+ tryLock() : boolean
+ tryLock(time : long, unit : TimeUnit) : boolean
+ unlock()
}
class Writer {
- LOGGER : Logger {static}
- name : String
- writeLock : Lock
- writingTime : long
+ Writer(name : String, writeLock : Lock)
+ Writer(name : String, writeLock : Lock, writingTime : long)
+ run()
+ write()
}
}
ReaderWriterLock --> "-readerLock" ReadLock
ReadLock --+ ReaderWriterLock
WriteLock --+ ReaderWriterLock
ReaderWriterLock --> "-writerLock" WriteLock
@enduml